[Day25] SQL server 日期函數 - SQL Server資料庫入門

這回介紹日期函數的使用。
在大多的資料庫都會有一些可以用的函式,讓我們做一些特殊操作。
在這回以SQL server資料庫為例子。

SQL server日期函式

GETDATE() 取得現在的日期時間
DATEADD() 增加或減少指定的時間間隔
DATEPART() 取出日期時間中特定的部分
CONVERT() 格式化日期時間顯示
DATEDIFF() 日期相減

可用的關鍵字

可用的關鍵字參數:

datepart (全名和縮寫)說明
year, yyyy, yy
month, mm, m
day, dd, d
hour, hh
minute, n
second, ss, s
millisecond, ms毫秒
microsecond, mcs微秒
nanosecond, ns毫微秒
quarter, qq, q
dayofyear, dy, y一年中的第幾天
week, wk, ww
weekday, dw星期幾

GETDATE

取得現在的日期時間

1
2
Select 
GETDATE() as 現在的日期時間

結果

DATEADD

增加或減少指定的時間間隔
可以輸入負值,代表回推
正值則是往後推

1
2
Select 
DATEADD(day, 2, GETDATE()) as 兩天後

結果

DATEPART

取出日期時間中特定的部分

1
2
3
SELECT DATEPART(yyyy, GETDATE())  as 年,
DATEPART(mm, GETDATE()) as 月,
DATEPART(dd, GETDATE()) as 日

結果

CONVERT

格式化日期時間顯示,可以用格式化代碼快速轉成指定規範格式。

格式代碼:

Style ID Style 格式
100 或者 0 mon dd yyyy hh:miAM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM
1
SELECT CONVERT(varchar, GETDATE(), 100) AS Converted
結果

DATEDIFF

日期相減

1
SELECT DATEDIFF(day, '2008-06-10', '2008-08-10') AS 日期相差

結果

結論

在SQL語法上比較常用的是DATEDIFF、DATEADD、CONVERT。GETDATE。
如:前1個月、今天-7天、上禮拜資料這種需求還蠻常見的。

參考資料
https://www.fooish.com/sql/sql-server-getdate-function.html
https://www.w3school.com.cn/sql/func_convert.asp