我需要一种方法来确定 SQL 中两个日期之间的天数。
答案必须是 ANSI SQL。
ANSI SQL-92 将 DATE - DATE 定义为返回 INTERVAL 类型。您应该能够使用与从 DATE 中提取标量相同的方法从 INTERVALS 中提取标量 - 足够恰当 - EXTRACT 函数 (4.5.3)。
<extract expression> 对日期时间或间隔进行操作,并返回一个精确的数值,该数值表示日期时间或间隔的一个组成部分的值。
但是,这在大多数数据库中实现得很差。您可能无法使用特定于数据库的东西。DATEDIFF 在不同的平台上得到了很好的实现。
这是这样做的“真实”方式。
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
祝你好运!
我不记得使用不支持 DATE1-DATE2 的 RDBMS 并且SQL 92似乎同意。
我相信 SQL-92 标准支持用“-”运算符减去两个日期。
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 支持: