我需要一种方法来确定SQL中两个日期之间的天数。
答案必须是ANSI SQL。
答案 0 :(得分:6)
ANSI SQL-92将DATE - DATE定义为返回INTERVAL类型。您应该能够使用与从DATE中提取它们相同的方法从INTERVALS中提取标量 - 使用足够恰当的EXTRACT函数(4.5.3)。
<提取表达>继续经营 日期时间或间隔并返回 表示的精确数值 日期时间的一个组成部分的价值 或间隔。
但是,这在大多数数据库中实施得很差。您可能会使用某些特定于数据库的东西。 DATEDIFF在不同平台上实现得非常好。
这是“真实”的做法。
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
祝你好运!
答案 1 :(得分:3)
我不记得使用不支持DATE1-DATE2的RDBMS而且SQL 92似乎同意。
答案 2 :(得分:1)
我相信SQL-92标准支持使用' - '运算符减去两个日期。
答案 3 :(得分:0)
SQL 92支持以下语法:
t.date_1 - t.date_2
EXTRACT函数也是ANSI,但SQL Server不支持它。例如:
ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)
将计算包装在绝对值函数中可确保该值显示为正值,即使较小的日期是第一个日期。
支持EXTRACT: