将自定义日期字符串转换为 SQL datetime2
Converting a custom date string into SQL datetime2
我必须将 CSV 文件加载到 SQL 服务器 2008 中的临时文件 table。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')
您可以使用 stuff
使用样式 103(假设 dd/mm/yyyy
)或 101(假设 mm/dd/yyyy
)删除 at
和 convert
:
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
您只需删除 at
和其中一个空格,然后告诉 SQL 服务器您的日期和月份采用哪种格式:
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
我必须将 CSV 文件加载到 SQL 服务器 2008 中的临时文件 table。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')
您可以使用 stuff
使用样式 103(假设 dd/mm/yyyy
)或 101(假设 mm/dd/yyyy
)删除 at
和 convert
:
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
您只需删除 at
和其中一个空格,然后告诉 SQL 服务器您的日期和月份采用哪种格式:
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