這回介紹日期函數的使用。
在大多的資料庫都會有一些可以用的函式,讓我們做一些特殊操作。
在這回以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