2015-02-09 32 views
13

Tôi cần sử dụng hàm Oracle nhưng hàm DATEDIFF không hoạt động trong Oracle DB.Hàm DATEDIFF trong Oracle

Làm cách nào để viết mã sau trong Oracle? Tôi đã thấy một số ví dụ sử dụng INTERVAL hoặc TRUNC.

SELECT DATEDIFF ('2000-01-01','2000-01-02') AS DateDiff; 
+1

thể trùng lặp của [Tính khác biệt giữa 2 ngày/lần trong Oracle SQL] (http://stackoverflow.com/questions/1096853/calculate- sự khác biệt-giữa-2-date-lần-in-oracle-sql) – Jens

Trả lời

16

Trong Oracle, bạn chỉ có thể trừ hai ngày và nhận được sự khác biệt trong ngày. Cũng lưu ý rằng không giống như SQL Server hoặc MySQL, trong Oracle bạn không thể thực hiện câu lệnh select mà không có mệnh đề from. Một cách để khắc này là sử dụng bảng BUILTIN giả, dual:

SELECT TO_DATE('2000-01-02', 'YYYY-MM-DD') - 
     TO_DATE('2000-01-01', 'YYYY-MM-DD') AS DateDiff 
FROM dual 
+1

Cảm ơn bạn đã trả lời! Tôi sẽ thử nó vào ngày mai coz Tôi chỉ có máy chủ SQL trong máy tính của tôi. Cảm ơn một lần nữa vì thời gian và lời giải thích của bạn ~ :) – user3601310

3

Bạn chỉ có thể trừ hai ngày. Bạn phải cast nó đầu tiên, sử dụng to_date:

select to_date('2000-01-01', 'yyyy-MM-dd') 
     - to_date('2000-01-02', 'yyyy-MM-dd') 
     datediff 
from dual 
; 

Kết quả là trong ngày, để sự khác biệt của hai ngày này là -1 (bạn có thể trao đổi hai ngày nếu bạn thích). Nếu bạn muốn có nó trong giờ, chỉ cần nhân kết quả với 24.

+0

Cảm ơn bạn đã trả lời! Tôi sẽ thử nó vào ngày mai coz Tôi chỉ có máy chủ SQL trong máy tính của tôi. Cảm ơn một lần nữa vì đã dành thời gian và lời giải thích của bạn ~ :) – user3601310

4

Chỉ trừ hai ngày:

select date '2000-01-02' - date '2000-01-01' as dateDiff 
from dual; 

Kết quả sẽ là sự khác biệt trong ngày.

Chi tiết có trong cuốn hướng dẫn:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

+0

Cảm ơn bạn đã trả lời! Tôi sẽ thử nó vào ngày mai coz Tôi chỉ có máy chủ SQL trong máy tính của tôi. Cảm ơn bạn lần nữa vì đã liên kết ~ :) – user3601310

+1

@ user3601310: 'coz' ngày mai là gì? (coz có vẻ giống như từ tiếng Đức cho "nôn" ....) –

+0

Ông có nghĩa là 'vì' ... –

Các vấn đề liên quan