2015-02-09 153 views
13

我需要使用Oracle,但DATEDIFF函数在Oracle DB中不起作用。Oracle中的DATEDIFF函数

如何在Oracle中编写以下代码?我看到一些使用INTERVAL或TRUNC的例子。

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

可能重复的[2日期之间计算差/中的Oracle SQL倍](http://stackoverflow.com/questions/1096853/calculate-差异在2日期时间在oracle-sql) – Jens 2015-02-09 09:27:50

回答

16

在Oracle中,你可以简单地减去两个日期,并得到的差异。另请注意,与SQL Server或MySQL不同,在Oracle中,如果没有from子句,则无法执行select语句。解决此的一种方式是使用内建虚设表,dual:的

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

谢谢你的回答!我明天会试一下,因为我的电脑只有SQL服务器。再次感谢您的时间和解释〜:) – user3601310 2015-02-09 10:05:18

3

您可以简单地减去两个日期。你必须先施放它,使用to_date

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

结果是天,这两个日期的差别是-1(你可以交换两个日期,如果你喜欢)。如果你想拥有它的时间,只是繁衍的结果与24

+0

谢谢你的答案!我明天会试一下,因为我的电脑只有SQL服务器。再次感谢您的时间和解释〜:) – user3601310 2015-02-09 10:06:59

4

只是减去两个日期:

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

结果将在几天之差。

更多细节都在手册中:
https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements001.htm#i48042

+0

谢谢你的答案!我明天会试一下,因为我的电脑只有SQL服务器。再次感谢您的时间n链接〜:) – user3601310 2015-02-09 10:05:45

+1

@ user3601310:什么是'明天coz'? (因为“呕吐”,所以听起来像德语单词......) – 2015-02-09 10:08:51

+0

他的意思是'因为'... – 2016-05-06 11:17:20