SQL Server日期转换

时间:2018-11-21 10:12:03

标签: sql sql-server tsql

我正在尝试使用以下代码将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行
  从字符串转换日期和/或时间时转换失败。

2 个答案:

答案 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);