首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 日期時間取得與格式化完全攻略:GETDATE 與 CONVERT 實戰

     編輯:關於SqlServer

核心函數速查

需求函數/語法範例輸出說明
目前日期時間GETDATE()2024-03-15 14:30:45.123精度至毫秒 (約 3.33ms)
標準完整格式 (yyyy-mm-dd hh:mi:ss)CONVERT(VARCHAR, GETDATE(), 20) 或 CONVERT(VARCHAR(20), GETDATE(), 120)2024-03-15 14:30:45樣式 20/120 皆為 ODBC 標準,長度 19,建議用 20 避免截斷
僅日期 (yyyy-mm-dd)CONVERT(VARCHAR, GETDATE(), 23) 或 CONVERT(VARCHAR(10), GETDATE(), 120)2024-03-15樣式 23 為 ISO 8601 短日期
僅時間 (hh:mi:ss)CONVERT(VARCHAR, GETDATE(), 108)14:30:45
中文常用格式 (yyyy年mm月dd日)CONVERT(VARCHAR, GETDATE(), 111) + REPLACE2024年03月15日111 為 yyyy/mm/dd,再 REPLACE('/', '年') 等

常用樣式代碼對照表 (SQL Server 2000 相容)

-- 無分隔符
112  -> 20240315
-- 常見分隔
101  -> 03/15/2024  (mm/dd/yyyy)
102  -> 2024.03.15  (yyyy.mm.dd)
103  -> 15/03/2024  (dd/mm/yyyy)
104  -> 15.03.2024  (dd.mm.yyyy)
105  -> 15-03-2024  (dd-mm-yyyy)
111  -> 2024/03/15  (yyyy/mm/dd)
-- 含時間
20/120 -> 2024-03-15 14:30:45
121    -> 2024-03-15 14:30:45.123 (含毫秒,ISO8601)

進階技巧

1. 日期運算與截取

-- 當天 00:00:00
DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)
-- 本月第一天
DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)
-- 本月最後一天 23:59:59.997
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 1, 0))

2. 格式化效能提示

  • CONVERT 比 FORMAT (SQL 2012+) 快數倍,高頻呼叫 (如報表逐列) 應優先用 CONVERT。
  • 避免在 WHERE 子句對欄位做 CONVERT,導致索引失效;改用範圍查詢:WHERE CreatedAt >= '2024-03-01' AND CreatedAt < '2024-04-01'。

3. SQL Server 2012+ 新選擇:FORMAT 函數

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss', 'zh-TW'); -- 2024-03-15 14:30:45
SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 dddd', 'zh-TW'); -- 2024年03月15日 星期五

支援 .NET 自訂格式字串與文化特性,適合表現層輸出,不建議用於大量資料處理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved