簡體   English   中英

兩個日期之間的天數 - ANSI SQL

[英]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支持:

  • Oracle 9i +
  • MySQL的
  • Postgres的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM