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

相關問題