将不常见的日期时间字符串转换为日期时间类型

时间:2019-05-19 19:09:40

标签: sql-server tsql ssms

我有一个字符串,它是日期时间,但不是最常见的格式之一。

20190316-000118619

是否存在使用内置转换函数将其转换为类型datetime的优美方法?

2 个答案:

答案 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,'-'));

db<>fiddle

答案 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
                        );