2

有在下面的格式日期值,在SQL Server的一个2000表转换12小时格式到24小时格式在SQL Server

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 
+1

你保存你日期为varchar?或约会?你能显示表格模式吗? –

回答

7

试试这个:

首先转换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) 
+0

谢谢。它工作。 – amnippon

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

我在sql-server 2012 –

+1

中做了这个,第一行有一个隐式转换。如果OP将日期存储为字符串,则最好在示例 –

+0

中使用varchar变量。谢谢。但是我不认为我可以在日期时间变量 – user1254579

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 
3

在SQL Server 2012中,我们可以使用格式功能有合适的日期时间格式。 24小时日期时间格式使用大写字母'HH:mm:ss'。

实施例 -

查询(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 
+0

这个查询返回一个错误,它说“在轻量级池中不支持公共语言运行库(CLR)执行。禁用”clr enabled“或”lightweight pooling“两个选项中的一个。在格式化功能以外的12小时格式中转换时间有什么方法吗? – niq

相关问题