如何在oracle sql中提取两个日期之间的天数?

时间:2018-12-03 10:33:05

标签: sql oracle oracle10g

我希望使用Oracle SQL在这两个日期之间的天数

日期:

BETWEEN "1/1/2018" AND "6/11/2018"

如何编写SQL查询?

4 个答案:

答案 0 :(得分:2)

between date '2018-01-01' and date '2018-11-06'

其中DATE文字完全像这样:DATE 'YYYY-MM-DD'

在您的示例中:

  • 不能使用双引号
  • 即使您使用单引号,也将是字符串,而不是DATE,因此您将取决于Oracle是否能够(隐式)将其转换为日期
  • 因此,始终使用日期,而不是字符串

[编辑]

这是您在这两个日期之间选择整个 calendar 的方法:

select date '2018-01-01' + level - 1
from dual
connect by level <= date '2018-11-06' - date '2018-01-01' + 1;

答案 1 :(得分:1)

正如其他答案所指出的那样,您可以简单地将两个日期相除,但是也不需要任何其他算术。

代码:

select to_date('6/11/2018', 'DD/MM/YYYY') - to_date('1/1/2018', 'DD/MM/YYYY')
  from dual;
  

结果:309

答案 2 :(得分:0)

只需使用

select date'2018-11-06' - date'2018-01-01' + 1 as days_difference
  from dual;

DAYS_DIFFERENCE
---------------
     310

with t( myDate ) as
(
 select date'2018-11-06' from dual union all 
 select date'2018-01-01' from dual
)
select max(myDate) - min(myDate) + 1 as days_difference
  from t;

DAYS_DIFFERENCE
---------------
     310

答案 3 :(得分:0)

您可以简单地做到:

select date1-date2 form dual;

select (sysdate-to_date('01-jan-2018'))-(sysdate-to_date('10-jan-2018'))from dual;