我正在尝试使用以下代码将varchar转换为日期。
SELECT CAST('14/08/2018' as date) --This code does not work
SELECT CAST('09/08/2018' as date) --This code works
当日期的一天部分到达'13'时,它似乎开始断裂。
给出的错误是:
第241层消息,州1,第7670行
从字符串转换日期和/或时间时转换失败。
答案 0 :(得分:2)
您应该在交谈之前确定日期部分:
我认为日期为dd/mm/yyyy
的日期:
SELECT CONVERT(DATE, '14/08/2018', 103)
但是,似乎SQL已经设置了日期mm/dd/yyyy
。
如果是这样,您可以更改它:
set dateformat dmy
答案 1 :(得分:1)
问题的原因是您使用的是 mm / dd / yyyy 格式,并且第一个值是月份。您将需要交换第一个和第二个值。为此,您可以将convert与选项101结合使用,该选项将 mm / dd / yyyy 转换为 mm / dd / yyyy :
select convert(DATE, '14/08/2018', 101);
这是美国标准,会将您的varchar
转换为DATE
。现在,如果您要以 dd / mm / yyyy 的格式显示它,则只需
select convert(varchar(10), convert(DATE, '14/08/2018', 101), 103);