2017-06-06 86 views
0

我必须将CSV文件加载到SQL Server 2008中的临时表中。在CSV文件中有一列包含格式如下的日期字符串11/04/2017 at 08:24:52。我如何解析此字符串并将其插入到datetime2列中?将自定义日期字符串转换为SQL 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') 

回答

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 
+0

谢谢,更换似乎更优雅对我来说比的东西,所以我会接受你的答案。 –

1

可以使用stuff以除去at和使用样式103(假设dd/mm/yyyy)或101(假设mm/dd/yyyyconvert

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