在使用資料庫時,時常會用到跟日期或時間相關的操作,例如取得當下日期、加幾日、計算日期相差幾天等等。
取得現在的日期時間:GETDATE()
取得當前的日期和時間 (current date and time)
SELECT GETDATE(); // '2018-11-30 13:10:02.047'
取出日期和時間中特定的部分:DATEPART()
用 DATEPART() 函數來取出日期和時間中特定的部分,比如年、月、日、時、分、秒等。
DATEPART() 語法 (Syntax)
DATEPART(datepart , date)
參數
datepart 可改為下列
- year, yyyy, yy = Year
- quarter, qq, q = Quarter
- month, mm, m = month
- dayofyear, dy, y = Day of the year
- day, dd, d = Day of the month
- week, ww, wk = Week
- weekday, dw, w = Weekday
- hour, hh = hour
- minute, mi, n = Minute
- second, ss, s = Second
- millisecond, ms = Millisecond
DATEPART() 範例
SELECT DATEPART(year, '2017/08/25'); // 2017
增加或減少指定的時間間隔:DATEADD()
DATEADD() 語法 (Syntax)
DATEADD(datepart, number, date)
參數
datepart 可改為下列
- year, yyyy, yy = Year
- quarter, qq, q = Quarter
- month, mm, m = month
- dayofyear, dy, y = Day of the year
- day, dd, d = Day
- week, ww, wk = Week
- weekday, dw, w = Weekday
- hour, hh = hour
- minute, mi, n = Minute
- second, ss, s = Second
- millisecond, ms = Millisecond
DATEADD() 範例
SELECT DATEADD(month, -2, '2017/08/25'); // 2017-06-25 00:00:00.000
日期相減:DATEDIFF()
DATEDIFF() 執行後會返回一個正負數的整數,表示 enddate - startdate 的時間間隔,datepart 參數則用來指定返回值的單位。
DATEDIFF() 語法 (Syntax)
DATEDIFF(datepart, startdate, enddate)
參數
datepart可改為下列
- year, yyyy, yy = Year
- quarter, qq, q = Quarter
- month, mm, m = month
- dayofyear = Day of the year
- day, dy, y = Day
- week, ww, wk = Week
- weekday, dw, w = Weekday
- hour, hh = hour
- minute, mi, n = Minute
- second, ss, s = Second
- millisecond, ms = Millisecond
DATEDIFF() 範例
SELECT DATEDIFF(month, '2017/08/25', '2011/08/25'); // -72
格式化顯示日期和時間:CONVERT()
CONVERT(data_type, date, style)
參數
Without century | With century | Input/Output | Standard |
---|---|---|---|
0 | 100 | mon dd yyyy hh:miAM/PM | Default |
1 | 101 | mm/dd/yyyy | US |
2 | 102 | yyyy.mm.dd | ANSI |
3 | 103 | dd/mm/yyyy | British/French |
4 | 104 | dd.mm.yyyy | German |
5 | 105 | dd-mm-yyyy | Italian |
6 | 106 | dd mon yyyy | - |
7 | 107 | Mon dd, yyyy | - |
8 | 108 | hh:mm:ss | - |
9 | 109 | mon dd yyyy hh:mi:ss:mmmAM (or PM) | Default + millisec |
10 | 110 | mm-dd-yyyy | USA |
11 | 111 | yyyy/mm/dd | Japan |
12 | 112 | yyyymmdd | ISO |
13 | 113 | dd mon yyyy hh:mi:ss:mmm | Europe (24 hour clock) |
14 | 114 | hh:mi:ss:mmm | 24 hour clock |
20 | 120 | yyyy-mm-dd hh:mi:ss | ODBC canonical (24 hour clock) |
21 | 121 | yyyy-mm-dd hh:mi:ss.mmm | ODBC canonical (24 hour clock) |
126 | yyyy-mm-ddThh:mi:ss.mmm | ISO8601 | |
127 | yyyy-mm-ddThh:mi:ss.mmmZ | ISO8601 (with time zone Z) | |
130 | dd mon yyyy hh:mi:ss:mmmAM | Hijiri | |
131 | dd/mm/yy hh:mi:ss:mmmAM | Hijiri |
DATEDIFF() 範例
SELECT CONVERT(varchar, '2017-08-25', 101); // 2017-08-25