SQL查询ProjectStartDate按MMDDYYYY格式输出时月份仅显示1位如何解决
SQL日期格式输出MMDDYYYY格式解决方案
核心问题说明
你原有写法出现单月份的核心原因是CONVERT搭配格式码110的输出在部分场景下不会强制补全前置0,或者导出Excel时默认数值格式自动省略了月份/日期的前置0。
方案1:使用FORMAT函数直接输出(SQL Server 2012及以上版本推荐)
直接通过内置FORMAT函数指定格式规则,自动补全月份、日期的前置0,无需额外字符串替换:
SELECT FORMAT(pp.ProjectStartDate, 'MMddyyyy') AS ProjectStartDate FROM Project pp
方案2:兼容旧版本SQL Server的写法
如果使用的是2012之前不支持FORMAT函数的SQL Server版本,手动拼接字段保证2位补0:
SELECT -- 月份补前置0取后2位 RIGHT('0' + CAST(MONTH(pp.ProjectStartDate) AS VARCHAR(2)), 2) + -- 日期补前置0取后2位 RIGHT('0' + CAST(DAY(pp.ProjectStartDate) AS VARCHAR(2)), 2) + -- 拼接4位年份 CAST(YEAR(pp.ProjectStartDate) AS VARCHAR(4)) AS ProjectStartDate FROM Project pp
Excel导出丢失前置0的排查
如果执行SQL查询得到的结果已经是8位带前置0的正确格式,导出Excel后丢失0,是Excel默认数值格式的自动优化导致,可通过以下方法解决:
- 导出前将Excel对应列的单元格格式设置为文本格式,再执行导出操作
- 也可以在SQL输出时给日期字符串前拼接一个半角单引号,强制Excel识别为文本:
SELECT '''' + FORMAT(pp.ProjectStartDate, 'MMddyyyy') AS ProjectStartDate FROM Project pp
内容的提问来源于stack exchange,提问作者Mo_DeWeb
相关产品推荐
相关产品推荐

