SQL Server中將日期類型轉(zhuǎn)字符串的幾種常用寫法
前言
在 SQL Server 中,將 日期類型(如 DATE、DATETIME、DATETIME2)轉(zhuǎn)換為字符串,有多種方法,適用于不同版本和格式需求。以下是常用且高效的寫法:
1. 使用 CONVERT() 函數(shù)(推薦,兼容性好)
CONVERT 支持多種預(yù)定義的 style 編碼,可快速格式化日期。
常用格式示例:
DECLARE @dt DATETIME = '2025-11-14 15:30:45';
-- yyyy-MM-dd(標(biāo)準(zhǔn)日期)
SELECT CONVERT(VARCHAR, @dt, 23); -- 結(jié)果: '2025-11-14'
-- yyyy-MM-dd HH:mm:ss
SELECT CONVERT(VARCHAR, @dt, 120); -- 結(jié)果: '2025-11-14 15:30:45'
-- MM/dd/yyyy
SELECT CONVERT(VARCHAR, @dt, 101); -- 結(jié)果: '11/14/2025'
-- dd/MM/yyyy
SELECT CONVERT(VARCHAR, @dt, 103); -- 結(jié)果: '14/11/2025'
-- yyyy年MM月dd日(需拼接)
SELECT
CAST(YEAR(@dt) AS VARCHAR) + '年' +
RIGHT('0' + CAST(MONTH(@dt) AS VARCHAR), 2) + '月' +
RIGHT('0' + CAST(DAY(@dt) AS VARCHAR), 2) + '日';
-- 結(jié)果: '2025年11月14日'
2. 使用 FORMAT() 函數(shù)(SQL Server 2012+,靈活但性能低)
適合需要自定義格式或本地化顯示(如中文)的場(chǎng)景。
DECLARE @dt DATETIME = '2025-11-14 15:30:45'; SELECT FORMAT(@dt, 'yyyy-MM-dd'); -- '2025-11-14' SELECT FORMAT(@dt, 'yyyy/MM/dd'); -- '2025/11/14' SELECT FORMAT(@dt, 'yyyy年MM月dd日'); -- '2025年11月14日' SELECT FORMAT(@dt, 'MMM dd, yyyy'); -- 'Nov 14, 2025' SELECT FORMAT(@dt, 'dddd, MMMM dd', 'zh-CN'); -- '星期五, 十一月 14'
注意:FORMAT() 性能較差,不要在大數(shù)據(jù)量查詢或 WHERE 條件中使用。
3. 拼接 YEAR() / MONTH() / DAY()(兼容老版本)
適用于 SQL Server 2008 及更早版本,或需要精確控制補(bǔ)零的情況。
DECLARE @dt DATE = '2025-11-05';
SELECT
CAST(YEAR(@dt) AS VARCHAR(4)) + '-' +
RIGHT('0' + CAST(MONTH(@dt) AS VARCHAR(2)), 2) + '-' +
RIGHT('0' + CAST(DAY(@dt) AS VARCHAR(2)), 2) AS FormattedDate;
-- 結(jié)果: '2025-11-05'
各方法對(duì)比

實(shí)際應(yīng)用示例
場(chǎng)景:按“年月”分組統(tǒng)計(jì)訂單(高性能寫法)
SELECT
LEFT(CONVERT(VARCHAR, OrderDate, 23), 7) AS YearMonth,
COUNT(*) AS OrderCount
FROM Orders
GROUP BY LEFT(CONVERT(VARCHAR, OrderDate, 23), 7)
ORDER BY YearMonth;
錯(cuò)誤做法(避免?。?/p>
-- 不要這樣寫:隱式轉(zhuǎn)換不可靠,且格式依賴系統(tǒng)設(shè)置 SELECT '' + GETDATE(); -- 結(jié)果不確定! -- 不要在 WHERE 中用 FORMAT 或 CONVERT 包裹字段 WHERE FORMAT(OrderDate, 'yyyy-MM') = '2025-11'; -- 全表掃描!
以上就是SQL Server中將日期類型轉(zhuǎn)字符串的幾種常用寫法的詳細(xì)內(nèi)容,更多關(guān)于SQL Server日期類型轉(zhuǎn)字符串的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
15個(gè)初學(xué)者必看的基礎(chǔ)SQL查詢語(yǔ)句
這篇文章主要介紹了15個(gè)初學(xué)者必看的基礎(chǔ)SQL查詢語(yǔ)句,對(duì)于初學(xué)者來(lái)說(shuō),這是一篇不能錯(cuò)過(guò)的文章2015-12-12
SQL 統(tǒng)計(jì)一個(gè)數(shù)據(jù)庫(kù)中所有表記錄的數(shù)量
最近公司的數(shù)據(jù)庫(kù)發(fā)現(xiàn)有表的數(shù)據(jù)被弄掉了,有些數(shù)據(jù)表記錄為0,于是想找出此數(shù)據(jù)庫(kù)中到底有哪些數(shù)據(jù)表的記錄都為0以縮小分析范圍,可使用如下的SQL Statement2012-01-01
SQL Server日期時(shí)間格式轉(zhuǎn)化的方式小結(jié)
在SQL Server中,日期格式轉(zhuǎn)換可以使用CONVERT函數(shù)和CAST函數(shù),本文呢給大家介紹了SQL Server日期時(shí)間格式轉(zhuǎn)化的方式,并通過(guò)代碼示例講解非常詳細(xì),需要的朋友可以參考下2024-03-03
SQL Server 2005作業(yè)設(shè)置定時(shí)任務(wù)
這篇文章主要介紹了SQL Server 2005作業(yè)設(shè)置定時(shí)任務(wù)的相關(guān)詳細(xì)步驟,需要的朋友可以參考下2017-01-01
在SQL?Server中使用?Try?Catch?處理異常的示例詳解
這篇文章主要介紹了如何在?SQL?Server?中使用?Try?Catch?處理異常,通過(guò)實(shí)例代碼了解 SQL Server 中的 Try-Catch 實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
SQL 級(jí)聯(lián)刪除與級(jí)聯(lián)更新的方法
SQL 級(jí)聯(lián)刪除與級(jí)聯(lián)更新的方法,需要的朋友可以參考一下2013-03-03

