Запрос на преобразование указанного c 12-часового формата в 24-часовой формат в sql server 2016 - PullRequest
0 голосов
/ 13 марта 2020

У нас есть случай, когда время, отредактированное пользователями, имеет формат 3/2/20 3:30P (где P обозначает Pm), который я пытаюсь преобразовать в 24-часовой формат, чтобы можно было использовать условие соединения со стандартным столбцом для что-то вроде 2020-03-02 15:30:0000

например 3/2/20 3:30P до 2020-03-02 15:30:0000

Попробовал приведенные ниже способы в одном из ответов в StackOverflow, но это не сработало:

SELECT CONVERT(DATETIME, '10/1/2013 6:39:04  PM', 0)  
-- Concatenate in required format
SELECT CONVERT(VARCHAR(10), CONVERT(DATETIME, '10/1/2013 6:39:04  PM', 0), 101) 
+ ' '+ CONVERT(VARCHAR(5),CONVERT(DATETIME, '10/1/2013 6:39:04  PM', 0), 108) 

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Предполагая , что форматом является M/d/yy h:mmA (or P), тогда я бы использовал код стиля 22, который предназначен для mm/dd/yy hh:mi:ss AM (or PM), так что это работает независимо от языковой настройки:

SELECT CONVERT(datetime2(0),V.YourDate + 'M',22)
FROM (VALUES('3/2/20 3:30P'))V(YourDate);
0 голосов
/ 13 марта 2020

Вы можете сделать:

DECLARE @dates VARCHAR(255) = '3/2/20 3:30P'

SELECT @dates AS Old_Date, 
       CONVERT(DATETIME, @dates + RIGHT(RIGHT(@dates, 1) + 'm', 1)) AS New_Date
...