第 3 部分:日期函式
在 IT 行業工作了 20 年之後,我可以確定日期和時間是出了名的難以處理。慶幸,像 SQL Server 這樣的現代關聯式資料庫為此提供了大量非常有用的函式。在今天的文章中,我們將探討一些最常用的函式。
取得目前日期和時間
每種程式設計語言都需要一種取得目前的日期和/或時間的方法。在 SQL Server 中,有兩種方法可以取得目前日期和時間,就是通過 CURRENT_TIMESTAMP 和 GETDATE() 函式。兩者都以「YYYY-MM-DD hh:mm:ss.mmm」格式傳回目前的日期和時間:
那麼,為什麼要使用這兩個函式呢?在上面的螢幕擷取畫面中可以看到,GETDATE() 需要括弧,而 CURRENT_TIMESTAMP 不需要。這使得它非常適合設定稽核欄位的預設值,例如建立日期和最後修改日期欄:
DATEPART
能够取得目前的日期和時間是一回事,但有時你需要解析出各個日期部分。這就是 DATEPART() 函式的用處。它以整數值形式傳回日期的指定部分。其語法如下:
DATEPART(interval, date)
interval(間隔)參數必須是特定的日期部分或縮寫。例如,年可以表示為 year、yyyy 或 yy。以下是完整清單:
- 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 = 毫秒
以下査詢將目前日期分為日、月和年:
DATEFROMPARTS
日期或時間函式還可以幫助我們根據不同的資料建構日期。它接受年、月和日作為輸入參數,並將它們組合成一個完整的日期:
DATEFROMPARTS(year, month, day)
以下是一個範例:
DATEADD
在日期加上或减去日期或時間間隔是最常見的日期作業之一。在 SQL Server 中,執行此作業的函式是 DATEADD。它接受三個輸入參數:要加的間隔、數量和套用間隔的日期:
DATEADD(interval, number, date)
DATEADD 接受的間隔與我們前面提到的 DATEPART 的間隔相同,所以這裡不再重複。取而代之,讓我們看看這個重要函式的幾個範例。
我們的第一個範例將今天的日期增加三個月:
若要减去間隔,只需提供一個負數參數:
DATEDIFF
我們的最後一個函式傳回兩個日期值之間的差異,以提供的間隔表示(請參閱上面接受值的完整清單):
DATEDIFF(interval, date1, date2)
以下査詢傳回以月為單位的兩個日期之間的差異:
第一個日期通常被認為是較早的日期,因此,如果第二個日期參數先於第一個日期,那麼 DATEDIFF 結果將為負值:
總結
在今天的文章中,我們介紹了一些最重要的 SQL Server 日期和時間函式。在下一篇也是最後一篇文章中,我們將研究其他函式。
如果你對 Navicat for SQL Server 感興趣,可以免費試用 14 天!
Rob Gravelle 居住於加拿大渥太華,是一名有 20 多年經驗的 IT 專家。過住,Rob 曾為情報相關的組織(如加拿大邊境服務局和各種商業組織)建置系統。在業餘時間,Rob 是一名出色的吉他演奏家,並發行了幾張 CD。