0

我必须将 CSV 文件加载到 SQL Server 2008 中的临时表中。CSV 文件中有一个列,其中包含格式如下的日期字符串11/04/2017 at 08:24:52。如何解析此字符串并将其插入datetime2列中?

以下导致预期的转换错误 -Conversion failed when converting date and/or time from character string.

  create table #temp
  (
    date_col datetime2(2),
    some_id varchar(20)
  )

  insert into #temp(date_col , some_id )
  values ('11/04/2017 at 08:24:52', '2323434')
4

2 回答 2

1

您可以使用stuff删除atconvert使用样式 103(假设dd/mm/yyyy)或 101(假设mm/dd/yyyy):

DECLARE @Date varchar(30) = '11/04/2017 at 08:24:52'

SELECT CONVERT(datetime2, STUFF(@Date, 12, 3, ''), 103)

结果:

    11.04.2017 08:24:52
于 2017-06-06T09:47:41.487 回答
1

您只需要删除at其中一个空格,然后告诉 SQL Server 您的日期和月份采用哪种格式:

select convert(datetime2, replace('11/04/2017 at 08:24:52',' at',''),103) -- 2017-04-11 08:24:52.0000000
      ,convert(datetime2, replace('11/04/2017 at 08:24:52',' at',''),101) -- 2017-11-04 08:24:52.0000000
于 2017-06-06T09:48:11.350 回答