Преобразовать необычную строку Datetime в тип Datetime - PullRequest
0 голосов
/ 19 мая 2019

У меня есть строка, которая является датой и временем, но не в одном из самых распространенных форматов.

20190316-000118619

Существует ли элегантный способ преобразования этого типа datetime с помощью встроенной функции преобразования?

Ответы [ 2 ]

2 голосов
/ 19 мая 2019

Общее предположение, может быть ...

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 <> скрипка

0 голосов
/ 20 мая 2019

Вы можете использовать это:

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
                        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...