SQL如何将date类型日期输出为YYYYMM格式而非默认yyyy-mm-dd格式
问题修复方案
原有日期计算逻辑无需调整,date类型存储的是时间戳值,默认输出格式由数据库环境配置决定,要输出YYYYMM格式的结果,只需在查询输出阶段做格式转换即可。
通用兼容写法(支持所有SQL Server版本)
使用内置CONVERT函数配合112样式码实现,该写法不受系统区域、语言配置影响,稳定性最高,适合生产环境使用:
declare @five date, @fiveend date set @five = dateadd(year,-5,datefromparts(year(getdate()),1,1)) set @fiveend = datefromparts(year(getdate()),12,1) -- 输出YYYYMM格式结果 select convert(varchar(6), @fiveend, 112) as fiveend_yyyymm select convert(varchar(6), @five, 112) as five_yyyymm
实现逻辑:样式码
112对应ISO标准日期格式,会将日期转为固定8位长度的YYYYMMDD字符串,截取前6位即可得到目标YYYYMM格式。
高版本简化写法(支持SQL Server 2012及以上)
如果数据库版本满足要求,可以直接用FORMAT函数指定格式串,写法更简洁:
declare @five date, @fiveend date set @five = dateadd(year,-5,datefromparts(year(getdate()),1,1)) set @fiveend = datefromparts(year(getdate()),12,1) select format(@fiveend, 'yyyyMM') as fiveend_yyyymm select format(@five, 'yyyyMM') as five_yyyymm
注意:大数据量查询场景下优先选择CONVERT写法,FORMAT函数性能相对较低。
内容的提问来源于stack exchange,提问作者user3168314
相关产品推荐
相关产品推荐

