SQL Server新手:如何用CASE WHEN将2022-03-01 00:00:00.000转为yyyymmdd
解决方案
首先,你遇到的FORMAT(pol_eff_dt, 'yyyymmdd')返回20220001的问题,是因为格式字符串中小写的mm代表分钟,而你的日期时间分钟部分是00,所以替换成了00。正确的月份格式符是大写的MM,修正后的语句应该是:
FORMAT(pol_eff_dt, 'yyyyMMdd')
如果需要结合CASE WHEN使用(比如针对不同条件处理日期转换),可以参考下面的示例:
SELECT CASE -- 可根据实际需求添加判断条件,比如日期不为空 WHEN pol_eff_dt IS NOT NULL THEN FORMAT(pol_eff_dt, 'yyyyMMdd') -- 其他条件下的返回值 ELSE '无有效日期' END AS formatted_date FROM your_table_name;
另外,SQL Server中还有更高效的日期转换方式,推荐使用CONVERT函数(性能优于FORMAT),同样可以结合CASE WHEN:
SELECT CASE WHEN pol_eff_dt IS NOT NULL THEN CONVERT(VARCHAR(8), pol_eff_dt, 112) ELSE '无有效日期' END AS formatted_date FROM your_table_name;
其中112是SQL Server预定义的格式代码,对应yyyymmdd格式。
内容的提问来源于stack exchange,提问作者NVsquirrel
相关产品推荐
相关产品推荐

