当前位置: 代码网 > it编程>数据库>MsSqlserver > SQL Server中将日期类型转字符串的几种常用写法

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

2025年11月19日 MsSqlserver 我要评论
前言在 sql server 中,将 日期类型(如 date、datetime、datetime2)转换为字符串,有多种方法,适用于不同版本和格式需求。以下是常用且高效的写法:1. 使用 conver

前言

在 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日期类型转字符串的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com