SQL Server中将日期类型转字符串的几种常用写法

 更新时间:2025年11月19日 08:56:48   作者:qq_36608622  
在 SQL Server 中,将 日期类型(如 DATE、DATETIME、DATETIME2)转换为字符串,有多种方法,适用于不同版本和格式需求,本文给大家介绍了几种常用且高效的写法,需要的朋友可以参考下

前言

在 SQL Server 中,将 日期类型(如 DATE、DATETIME、DATETIME2)转换为字符串,有多种方法,适用于不同版本和格式需求。以下是常用且高效的写法:

1. 使用 CONVERT() 函数(推荐,兼容性好)

CONVERT 支持多种预定义的 style 编码,可快速格式化日期。

常用格式示例:

DECLARE @dt DATETIME = '2025-11-14 15:30:45';

-- yyyy-MM-dd(标准日期)
SELECT CONVERT(VARCHAR, @dt, 23);  -- 结果: '2025-11-14'

-- yyyy-MM-dd HH:mm:ss
SELECT CONVERT(VARCHAR, @dt, 120); -- 结果: '2025-11-14 15:30:45'

-- MM/dd/yyyy
SELECT CONVERT(VARCHAR, @dt, 101); -- 结果: '11/14/2025'

-- dd/MM/yyyy
SELECT CONVERT(VARCHAR, @dt, 103); -- 结果: '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) + '日';
-- 结果: '2025年11月14日'

2. 使用 FORMAT() 函数(SQL Server 2012+,灵活但性能低)

适合需要自定义格式或本地化显示(如中文)的场景。

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() 性能较差,不要在大数据量查询或 WHERE 条件中使用。

3. 拼接 YEAR() / MONTH() / DAY()(兼容老版本)

适用于 SQL Server 2008 及更早版本,或需要精确控制补零的情况。

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;
-- 结果: '2025-11-05'

各方法对比

实际应用示例

场景:按“年月”分组统计订单(高性能写法)

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;

错误做法(避免!)

-- 不要这样写:隐式转换不可靠,且格式依赖系统设置
SELECT '' + GETDATE();  -- 结果不确定!

-- 不要在 WHERE 中用 FORMAT 或 CONVERT 包裹字段
WHERE FORMAT(OrderDate, 'yyyy-MM') = '2025-11';  -- 全表扫描!

以上就是SQL Server中将日期类型转字符串的几种常用写法的详细内容,更多关于SQL Server日期类型转字符串的资料请关注脚本之家其它相关文章!

相关文章

  • sqlserver索引的原理及索引建立的注意事项小结

    sqlserver索引的原理及索引建立的注意事项小结

    本文起点可能会相对高点,首先你的很熟悉索引以及他们的存储结构 有很多地方你可能觉得有异议,欢迎一起讨论
    2012-07-07
  • ACCESS数据库的压缩,备份,还原,下载,删除的实现

    ACCESS数据库的压缩,备份,还原,下载,删除的实现

    ACCESS数据库的压缩,备份,还原,下载,删除的实现...
    2006-08-08
  • SQL查询方法精华集

    SQL查询方法精华集

    简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等
    2017-05-05
  • SQL Server游标的介绍与使用

    SQL Server游标的介绍与使用

    今天小编就为大家分享一篇关于SQL Server游标的介绍与使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • 如何验证会员系统中用户的邮箱是否真实存在

    如何验证会员系统中用户的邮箱是否真实存在

    在开发网站时,我们需要对用户注册的邮箱进行核对与验证,用户填写的邮箱是否有效邮箱。这篇文章主要介绍了如何验证会员系统中用户的邮箱是否真实存在的相关资料,需要的朋友可以参考下
    2016-10-10
  • SqlServer 表单查询问题及解决方法

    SqlServer 表单查询问题及解决方法

    这篇文章主要介绍了SqlServer 表单查询问题及解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • [js]javascript与剪贴板交互

    [js]javascript与剪贴板交互

    [js]javascript与剪贴板交互...
    2007-07-07
  • SqlServer触发器详解

    SqlServer触发器详解

    触发器是特殊的一个存储过程,在程序开发中经常会用到,触发器和存储过程唯一的区别就是触发器不能执行execute语句调用,而是在用户执行Transact-SQL语句时自动触发执行,下面小编给大家详解sqlserver触发器,需要的朋友可以参考下
    2015-08-08
  • Navicat连接SQL Server报错[08001]超时错误(258)的完整排查与解决方案

    Navicat连接SQL Server报错[08001]超时错误(258)的完整排查与解决方案

    在使用 Navicat 17.3.6 连接 SQL Server 2012 时,反复出现连接超时错误(错误代码 258),但同一台机器上使用 IntelliJ IDEA 的 Database 工具却能正常连接,本文给大家介绍了完整排查与解决方案,需要的朋友可以参考下
    2025-11-11
  • sql集合运算符使用方法

    sql集合运算符使用方法

    今天介绍数据库里面的集合运算符,它是指匹配集合的每一个结果。数据库集合运算符包括:IN、ANY、SOME、ALL以及EXISTS等
    2014-01-01

最新评论