Navicat 部落格

重要的 SQL Server 函式 - 日期函式 2021 年 5 月 14 日,由 Robert Gravelle 撰寫

第 3 部分:日期函式

在 IT 行業工作了 20 年之後,我可以確定日期和時間是出了名的難以處理。慶幸,像 SQL Server 這樣的現代關聯式資料庫為此提供了大量非常有用的函式。在今天的文章中,我們將探討一些最常用的函式。

取得目前日期和時間

每種程式設計語言都需要一種取得目前的日期和/或時間的方法。在 SQL Server 中,有兩種方法可以取得目前日期和時間,就是通過 CURRENT_TIMESTAMP 和 GETDATE() 函式。兩者都以「YYYY-MM-DD hh:mm:ss.mmm」格式傳回目前的日期和時間:

getdate_and_current_timestamp (32K)

那麼,為什麼要使用這兩個函式呢?在上面的螢幕擷取畫面中可以看到,GETDATE() 需要括弧,而 CURRENT_TIMESTAMP 不需要。這使得它非常適合設定稽核欄位的預設值,例如建立日期和最後修改日期欄:

current_timestamp (61K)

DATEPART

能够取得目前的日期和時間是一回事,但有時你需要解析出各個日期部分。這就是 DATEPART() 函式的用處。它以整數值形式傳回日期的指定部分。其語法如下:

DATEPART(interval, date)

interval(間隔)參數必須是特定的日期部分或縮寫。例如,年可以表示為 yearyyyyyy。以下是完整清單:

  • year, yyyy, yy = 年
  • quarter, qq, q = 季
  • month, mm, m = 月
  • dayofyear, dy, y = 年份的日
  • day, dd, d = 月份的日
  • week, ww, wk = 週
  • weekday, dw, w = 工作日
  • hour, hh = 小時
  • minute, mi, n = 分
  • second, ss, s = 秒
  • millisecond, ms = 毫秒

以下査詢將目前日期分為日、月和年:

datepart (48K)

DATEFROMPARTS

日期或時間函式還可以幫助我們根據不同的資料建構日期。它接受年、月和日作為輸入參數,並將它們組合成一個完整的日期:

DATEFROMPARTS(year, month, day)

以下是一個範例:

date_from_parts (30K)

DATEADD

在日期加上或减去日期或時間間隔是最常見的日期作業之一。在 SQL Server 中,執行此作業的函式是 DATEADD。它接受三個輸入參數:要加的間隔、數量和套用間隔的日期:

DATEADD(interval, number, date)

DATEADD 接受的間隔與我們前面提到的 DATEPART 的間隔相同,所以這裡不再重複。取而代之,讓我們看看這個重要函式的幾個範例。

我們的第一個範例將今天的日期增加三個月:

date_add (41K)

若要减去間隔,只需提供一個負數參數:

date_subtract (33K)

DATEDIFF

我們的最後一個函式傳回兩個日期值之間的差異,以提供的間隔表示(請參閱上面接受值的完整清單):

DATEDIFF(interval, date1, date2)

以下査詢傳回以月為單位的兩個日期之間的差異:

date_diff (31K)

第一個日期通常被認為是較早的日期,因此,如果第二個日期參數先於第一個日期,那麼 DATEDIFF 結果將為負值:

date_diff_hours (34K)

總結

在今天的文章中,我們介紹了一些最重要的 SQL Server 日期和時間函式。在下一篇也是最後一篇文章中,我們將研究其他函式。

如果你對 Navicat for SQL Server 感興趣,可以免費試用 14 天!



Rob Gravelle 居住於加拿大渥太華,是一名有 20 多年經驗的 IT 專家。過住,Rob 曾為情報相關的組織(如加拿大邊境服務局和各種商業組織)建置系統。在業餘時間,Rob 是一名出色的吉他演奏家,並發行了幾張 CD

Navicat 文章
頻道記錄
分享
部落格封存檔