如何在SQL Server中按mmddyy等格式将日期转为字符串
SQL Server 实现指定格式日期转字符串的方法
核心实现逻辑
要实现和Excel TEXT函数等价的无分隔符短日期格式化,即把日期值转换为mmddyy、ddmmyy这类拼接格式的字符串,可根据实际使用的SQL Server版本选择对应方案:
1. 高版本(2012及以上)最简便实现
直接使用内置FORMAT()函数,语法逻辑和Excel TEXT函数高度对齐:
- 转
mmddyy格式(月+日+两位年):FORMAT(日期字段, 'MMddyy')
示例:日期值2024-05-03执行后返回字符串050324,和Excel中TEXT(日期单元格,"mmddyy")的输出结果完全一致 - 转
ddmmyy格式(日+月+两位年):FORMAT(日期字段, 'ddMMyy')
同上示例日期执行后返回030524
格式字符注意点:MM是代表带前导零的两位数月份的占位符,千万不要写成小写
mm,在SQL Server的日期格式化规则里小写mm指代分钟数,会导致结果错乱。
2. 低版本(2008及更早)兼容实现
如果环境没有FORMAT()函数,可通过原生日期取值函数拼接实现:
- 转
mmddyy格式:RIGHT('0' + LTRIM(MONTH(日期字段)), 2) + RIGHT('0' + LTRIM(DAY(日期字段)), 2) + RIGHT(LTRIM(YEAR(日期字段)), 2) - 转
ddmmyy格式:RIGHT('0' + LTRIM(DAY(日期字段)), 2) + RIGHT('0' + LTRIM(MONTH(日期字段)), 2) + RIGHT(LTRIM(YEAR(日期字段)), 2)
实操注意事项
- 入参必须是原生日期类型(
date/datetime/datetime2),如果是字符串格式的日期值,需要先通过CAST()/CONVERT()转成日期类型再做格式化,避免结果偏差 - 批量处理大表数据时,
FORMAT()函数的性能弱于原生拼接的实现方式,亿级数据量的计算场景优先选择低版本兼容的拼接方案 - 两种方法生成的结果均为无分隔符的定长6位字符串,完全匹配业务中纯文本短日期的使用要求
内容的提问来源于stack exchange,提问作者Nico M.
相关产品推荐
相关产品推荐

