Varchar to Date - 从字符串转换日期和/或时间时转换失败

时间:2018-02-21 00:00:56

标签: sql sql-server csv bulkinsert

我正在尝试使用批量插入加载csv文件。我的csv文件有4个日期列,我认为这是导致问题的。日期格式为DD/MM/YY,如何将其更改为DD/MM/YYYY。我需要将这些日期字段导入date列,而不是varchar

我正在将此文件加载到#temptable中,然后使用以下代码将其插入到数据库表中:

insert into table (a,b,c,d,e)

select a, 
       b,
       convert(date,c,103),
       convert(date,d,103),
       e
from #temptable

不确定我哪里出错了。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以使用 SET DATEFORMAT

示例

Set DateFormat DMY
Declare @D varchar(25) = '20/02/2018'

Select try_convert(date,@D)

<强>返回

2018-02-20
  

编辑 - 只是为了娱乐

如果将DateFormat设置为MDY,则try_convert将返回null

Set DateFormat MDY
Declare @D varchar(25) = '20/02/2018'

Select try_convert(date,@D)

退货

NULL

答案 1 :(得分:0)

如果临时表中的格式“更改”,那是因为它们已经是日期。你可以这样做:

insert into table (a, b, c, d, e)
    select a, b, c, d, e
    from #temptable;

如果不起作用,请找到有问题的值:

select d, e
from #temptable
where convert(date, c, 103) is null or
      convert(date, d, 103) is null;