将不常见的 Datetime 字符串转换为 Datetime 类型
Convert uncommon Datetime string to type Datetime
我有一个日期时间字符串,但它不是最常见的格式之一。
20190316-000118619
是否有使用内置转换函数将其转换为类型 datetime
的优雅方法?
总的猜测,也许...
SELECT CONVERT(datetime2(3),STUFF(STUFF(STUFF(STUFF(STUFF(STUFF('20190316-000118619',9,1,'T'),16,0,'.'),14,0,':'),12,0,':'),7,0,'-'),5,0,'-'));
你可以使用这个:
DECLARE @s VARCHAR(MAX) = '20190316-000118619';
SELECT DATETIMEFROMPARTS(
SUBSTRING(@s, 1, 4),--Year
SUBSTRING(@s, 5, 2),--Month
SUBSTRING(@s, 7, 2),--Day
SUBSTRING(@s, CHARINDEX('-', @s) + 1, 2),--Hour
SUBSTRING(@s, CHARINDEX('-', @s) + 3, 2),--Minute
0,--Second
0--Milisecond
);
我有一个日期时间字符串,但它不是最常见的格式之一。
20190316-000118619
是否有使用内置转换函数将其转换为类型 datetime
的优雅方法?
总的猜测,也许...
SELECT CONVERT(datetime2(3),STUFF(STUFF(STUFF(STUFF(STUFF(STUFF('20190316-000118619',9,1,'T'),16,0,'.'),14,0,':'),12,0,':'),7,0,'-'),5,0,'-'));
你可以使用这个:
DECLARE @s VARCHAR(MAX) = '20190316-000118619';
SELECT DATETIMEFROMPARTS(
SUBSTRING(@s, 1, 4),--Year
SUBSTRING(@s, 5, 2),--Month
SUBSTRING(@s, 7, 2),--Day
SUBSTRING(@s, CHARINDEX('-', @s) + 1, 2),--Hour
SUBSTRING(@s, CHARINDEX('-', @s) + 3, 2),--Minute
0,--Second
0--Milisecond
);