SQL Server中按格式将varchar列转为date报错求助
解决SQL Server中varchar日期转date类型的转换失败问题
错误原因
你执行的语句Select CONVERT(date, '1403-02-17', 103)触发了以下错误:
消息 241,级别 16,状态 1,第 171 行
从字符串转换日期和/或时间时失败。
问题出在样式参数103上:这个参数对应dd/mm/yyyy(日/月/年)的日期格式,但你的目标字符串'1403-02-17'是YYYY-mm-dd(年-月-日)格式。SQL Server按103规则解析时,会把1403识别为“日”,这显然超出了日期的合法范围(日的最大值为31),因此转换失败。
正确转换方式
YYYY-mm-dd是SQL Server默认兼容的日期格式,无需指定额外样式参数,直接转换即可:
方式1:使用CONVERT函数
SELECT CONVERT(date, '1403-02-17')
方式2:使用CAST函数
SELECT CAST('1403-02-17' AS date)
如果要对整列进行转换,直接替换为列名即可:
SELECT CONVERT(date, your_date_column) FROM your_table;
内容的提问来源于stack exchange,提问作者Mah_Bar
相关产品推荐
相关产品推荐

