两个日期之间的天数 - ANSI SQL
-
05-07-2019 - |
题
我需要一种方法来确定 SQL 中两个日期之间的天数。
答案必须是 ANSI SQL。
解决方案
ANSI SQL-92将DATE - DATE定义为返回INTERVAL类型。您应该能够使用与使用<!>#8211从DATE中提取它们相同的方法从INTERVALS中提取标量;足够的<!>#8211;提取功能(4.5.3)。
<!> lt; extract expression <!> gt;继续经营 日期时间或间隔并返回 表示的精确数值 日期时间的一个组成部分的价值 或间隔。
但是,这在大多数数据库中实施得很差。您可能会使用某些特定于数据库的东西。 DATEDIFF在不同平台上实现得非常好。
这是<!>“真实的<!>”;这样做的方式。
SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;
祝你好运! 其他提示
我不记得使用不支持DATE1-DATE2和
我相信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 支持:
- 甲骨文9i+
- MySQL
- Postgres
不隶属于 StackOverflow