[英]Number of days between two dates - ANSI SQL
我需要一種方法來確定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支持:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.