SQL Server中如何将dd/MM/yyyy格式日期字符串转为正确DATE类型
问题原因
你之前的写法逻辑存在错误:CONVERT 函数做同类型(字符串转字符串)转换时,指定的style参数不会生效,你最终相当于直接用会话默认的日期格式解析09/08/2021,而你当前会话默认日期格式为MM/dd/yyyy,因此得到了错误的转换结果。
正确转换方案
SQL Server中103号格式编码刚好对应dd/MM/yyyy的输入格式,直接用CONVERT或TRY_CONVERT指定该编码即可完成正确转换,不需要修改源数据。
方案1:直接转换(确定源数据格式统一无脏数据时使用)
SELECT CONVERT(DATE, '09/08/2021', 103) AS correct_date;
返回结果为2021-08-09
方案2:安全转换(源数据可能存在格式错误时使用,转换失败返回NULL不会报错)
SELECT TRY_CONVERT(DATE, '09/08/2021', 103) AS correct_date;
如果需要批量处理表中的日期字符串字段,替换引号内的常量为你的字段名即可,示例:
SELECT TRY_CONVERT(DATE, 你的日期字符串字段名, 103) AS correct_date FROM 你的表名;
内容的提问来源于stack exchange,提问作者dragonfury2
相关产品推荐
相关产品推荐

