我有一个字符串,它是日期时间,但不是最常见的格式之一。
20190316-000118619
是否存在使用内置转换函数将其转换为类型datetime
的优美方法?
答案 0 :(得分:2)
完全猜测,也许...
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,'-'));
答案 1 :(得分: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
);