将日期转换为Datetime在SQL中给出错误

时间:2019-05-30 01:46:23

标签: sql sql-server

我正在varchar(50)列中存储一个日期,例如thie:

1/01/2018

我想将它们转换为Datetime值,例如:2018-01-22 00:00:00.0000000

我的SQL就像;

select 
  [Site],
  CONVERT(VARCHAR(50), CAST([InvDay] AS DATETIME), 101) as Date,
from tableA;

但是我得到了

  

将varchar数据类型转换为datetime数据类型会导致超出范围的值。

我也这样尝试过,但是有同样的错误;

CONVERT(datetime, [InvDay]) as  Date,

我该如何做?

2 个答案:

答案 0 :(得分:0)

查看无法转换的值:

select invday
from tableA
where try_cast(invday as date) is null and invday is not null;

也不清楚您的格式是mm / dd / yyyy还是dd / mm / yyyy。您可以使用convert()指定格式:

-- mm/dd/yyyy
select invday
from tableA
where try_convert(date, invday, 101) is null and
      invday is not null;


-- dd/mm/yyyy
select invday
from tableA
where try_convert(date, invday, 103) is null and
      invday is not null;

答案 1 :(得分:0)

我认为您想使用set dateformat dmy。这是一个示例:

declare @d varchar(15) 
set @d='13/1/2018'
set dateformat dmy
select convert(datetime,@d)