У меня есть строка, представляющая собой дату и время, но она не в одном из самых распространенных форматов.
20190316-000118619
Есть ли элегантный способ преобразовать это в тип datetime
, используя встроенную функцию преобразования?
Я уверен, что мы можем догадаться, каким должен быть 20190316. а как же 118619?
Мне просто нужен 0001, который представляет время. Следующие 18619 не требуются.
Это не говорит нам, который час...
Полное предположение, может быть...
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
);
Какое время это должно представлять? Какие попытки вы предприняли до сих пор?