這回介紹日期函數的使用。
在大多的資料庫都會有一些可以用的函式,讓我們做一些特殊操作。
在這回以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 | Select |
結果
DATEADD
增加或減少指定的時間間隔
可以輸入負值,代表回推
正值則是往後推
1 | Select |
結果
DATEPART
取出日期時間中特定的部分
1 | SELECT DATEPART(yyyy, 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