在sql server中将12小时格式转换为24小时格式

时间:2013-10-24 10:22:43

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2

在以下格式中有一个日期值,在一个sql server 2000表中

10/1/2013 10:39:14 PM
10/1/2013 6:39:04  PM
10/1/2013 8:19:31  AM
10/1/2013 3:35:40  AM

如何将上述格式数据值转换为24小时日期格式,如下所示

10/1/2013 10:39
10/1/2013 18:39
10/1/2013 8:19
10/1/2013 3:35

5 个答案:

答案 0 :(得分:10)

试试这个:

首先将varchar日期转换为datetime,然后您可以按照自己的方式操作它:

-- CONVERT TO DATETIME TO GET 24HR FORMAT
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)

答案 1 :(得分:9)

在SQL Server 2012中,我们可以使用Format函数来获得合适的日期时间格式。使用大写字母'HH:mm:ss'24小时日期时间格式。

示例 -

查询(24小时格式):

Select Format(cast('2016-03-03 23:59:59' as datetime),'dd-MMM-yyyy HH:mm:ss','en-us'). ('HH:mm:ss' in Capital letters)

<强>结果

03-Mar-2016 23:59:59

查询(12小时格式):

Select Format(cast('2016-03-03 23:59:59' as datetime),'dd-MMM-yyyy hh:mm:ss','en-us'). ('hh:mm:ss' in Capital letters)

<强>结果

03-Mar-2016 11:59:59

答案 2 :(得分:2)

Declare @s DateTime = '2012-12-26 11:00:00.000 PM'
select stuff(convert(varchar(19), @s, 126),11,1,' ')

答案 3 :(得分:1)

declare @Hour_Part AS VARCHAR(50)
declare @Min_Part AS VARCHAR(50)
declare @Sec_Part AS VARCHAR(50)
declare @PMORAM AS VARCHAR(5)
SELECT @Hour_Part = DATEPART(HOUR,CONVERT(VARCHAR(50),GETDATE(),108))
SELECT @PMORAM =  RIGHT(CONVERT(VARCHAR(30), GETDATE(), 9), 2) 
IF @Hour_Part = 12 AND @PMORAM = 'AM'
BEGIN
SET @Hour_Part = '00'
select @Min_Part = DATEPART(MINUTE,CONVERT(VARCHAR(50),GETDATE(),108))
select @Sec_Part = DATEPART(SECOND,CONVERT(VARCHAR(50),GETDATE(),108))
select @Hour_Part + ':' + @Min_Part + ':' + @Sec_Part AS DateTime24
END
ELSE IF @Hour_Part > 0 AND @Hour_Part < 12 AND @PMORAM = 'PM'
BEGIN
SET @Hour_Part = @Hour_Part + 12
select @Min_Part = DATEPART(MINUTE,CONVERT(VARCHAR(50),GETDATE(),108))
select @Sec_Part = DATEPART(SECOND,CONVERT(VARCHAR(50),GETDATE(),108))
select @Hour_Part + ':' + @Min_Part + ':' + @Sec_Part AS DateTime24
END
ELSE
BEGIN
select @Min_Part = DATEPART(MINUTE,CONVERT(VARCHAR(50),GETDATE(),108))
select @Sec_Part = DATEPART(SECOND,CONVERT(VARCHAR(50),GETDATE(),108))
select @Hour_Part + ':' + @Min_Part + ':' + @Sec_Part AS DateTime24
END

答案 4 :(得分:0)

尝试

DECLARE @MyDateTime; 
SET @MyDateTime = '2016-03-03 23:59:59'
SELECT FORMAT(CONVERT(DATETIME,@MyDateTime,108),'dd-MMM-yyyy HH:mm:ss','en-us')