在 sql 服务器 2016 中将特定 12 小时格式类型转换为 24 小时格式类型的查询

Query to Convert a specific 12 hour format type to 24 hour format type in sql server 2016

我们有一个案例,用户编辑的时间格式为 3/2/20 3:30P(其中 P 表示 P.m。)我正在尝试将其转换为 24 小时格式以便能够将连接条件与标准列一起使用,例如 2020-03-02 15:30:0000

例如3/2/20 3:30P2020-03-02 15:30:0000

在 Whosebug 中的一个答案中尝试了以下方法,但没有成功:

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) 

你可以这样做:

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

假设 格式为 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);