在使用資料庫時,時常會用到跟日期或時間相關的操作,例如取得當下日期、加幾日、計算日期相差幾天等等。

取得現在的日期時間: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