SQL Server中字符串(25-11-2023 13:33:46+0000)转日期失败求助
解决SQL Server中转带时区的日-月-年格式字符串为date类型的问题
直接使用CAST或CONVERT失败的原因是SQL Server默认无法识别25-11-2023 13:33:46+0000这种带时区后缀的日-月-年格式,以下是几种可行的解决方法:
方法1:使用TRY_PARSE解析(推荐)
TRY_PARSE可以直接识别带时区的日期格式,指定区域格式为en-GB(对应日-月-年)即可转换:
SELECT TRY_PARSE('25-11-2023 13:33:46+0000' AS date USING 'en-GB') AS ConvertedDate;
如果需要保留时区信息,可先转为datetimeoffset再转date:
SELECT CAST(TRY_PARSE('25-11-2023 13:33:46+0000' AS datetimeoffset) AS date) AS ConvertedDate;
方法2:截取时区部分后用CONVERT指定样式
先通过LEFT函数截取掉末尾的时区后缀,再用样式103(对应dd/mm/yyyy格式)转换:
SELECT CONVERT(date, LEFT('25-11-2023 13:33:46+0000', 19), 103) AS ConvertedDate;
方法3:修正时区格式后转为datetimeoffset再转date
将字符串中的+0000替换为+00:00(符合SQL Server的datetimeoffset时区格式要求),转换后再转为date类型:
SELECT CAST(CONVERT(datetimeoffset, REPLACE('25-11-2023 13:33:46+0000', '+0000', '+00:00')) AS date) AS ConvertedDate;
内容的提问来源于stack exchange,提问作者Win Sunday
相关产品推荐
相关产品推荐

