解决SQL中varchar类型ExpiryDate列转date类型的转换失败问题
解决SQL Server中varchar转date的格式错误问题
你的问题出在日期字符串格式与SQL Server默认解析规则不匹配:你的数据是dd/mm/yyyy(日/月/年)格式,而SQL Server默认按mm/dd/yyyy(月/日/年)解析,导致部分日期(比如15/03/2017,15超过了月份的最大取值12)无法转换。
以下是两种可靠的解决方法:
方法1:使用CONVERT指定日期格式
用CONVERT函数并指定style参数103(对应dd/mm/yyyy格式),它会自动忽略字符串末尾的00:00时间部分,兼容两种格式的输入:
SELECT CONVERT(date, [ExpiryDate], 103) AS Expiry_Date FROM [dbo].[training]
方法2:处理脏数据(可选)
如果列中存在格式错误的脏数据,用TRY_CONVERT替代CONVERT,它会返回NULL而非抛出错误,方便排查问题:
SELECT TRY_CONVERT(date, [ExpiryDate], 103) AS Expiry_Date FROM [dbo].[training]
内容的提问来源于stack exchange,提问作者sthambi
相关产品推荐
相关产品推荐

