2011-01-20 254 views
7

如何在SQL Server 2008中將24小時格式化時間轉換爲12小時格式化時間?在SQL中將時間轉換爲12小時制格式

+1

爲什麼不把它轉換的代碼,而不是分貝? – 2011-01-20 09:48:05

+0

@OrWeinberger,我們不確定是否有其他代碼,因爲這個問題只提到SQL,也許它可能是一個報告。 – kd7iwp 2017-08-25 23:15:08

回答

19

你有當前時間在變量/類型的時間列嗎?如果是的話,很容易:

declare @t time 
set @t = '14:40' 

select CONVERT(varchar(15),@t,100) 

結果:

2:40PM 

如果是在datetime(2)變量,那麼你就必須運行CONVERT之後剝離出來的日期部分。如果它在一個字符串中,那麼首先CONVERT它到time,然後使用上面的代碼。

+0

爲什麼要將時間轉換爲字符串?在大多數情況下,這可能不是一個好主意。 – sqlvogel 2011-01-20 10:17:22

+3

@dportas - 如果它正在進入客戶端應用程序,那麼我同意,讓應用程序執行格式化會更好。另一方面,如果它是定義(例如)導出到CSV文件的查詢(以及任何想要此CSV的骨頭系統想要AM/PM而不是ISO格式的日期時間值),那麼我不會看到傷害。由於我們關心格式,我們必須轉換爲字符串。 – 2011-01-20 10:21:09

0

SQL Server不會格式化時間。它是控制時間顯示的客戶端應用程序。您應該更改應用程序或代碼中的時間格式設置。

6

有時你需要內嵌做到這一點:

SELECT CONVERT(varchar(15), CAST(GETDATE() AS TIME), 100) as AmPmTime 
6

爲了增加RADMIN的評論,語法是:

CONVERT(data_type,expression,style_code) 

這裏有一些其他風格的代碼,你可以使用:

SELECT 
GETDATE() AS GetDate, 
CONVERT(VARCHAR,GETDATE(),0) AS '0', 
CONVERT(VARCHAR,GETDATE(),100) AS '100', 
CONVERT(VARCHAR,GETDATE(),1) AS '1', 
CONVERT(VARCHAR,GETDATE(),101) AS '101', 
CONVERT(VARCHAR,GETDATE(),7) AS '7', 
CONVERT(VARCHAR,GETDATE(),107) AS '107', 
CONVERT(VARCHAR,GETDATE(),108) AS '108', 
CONVERT(VARCHAR,GETDATE(),108) AS '108', 
CONVERT(VARCHAR,GETDATE(),10) AS '10', 
CONVERT(VARCHAR,GETDATE(),110) AS '110', 
CONVERT(VARCHAR,GETDATE(),12) AS '12', 
CONVERT(VARCHAR,GETDATE(),112) AS '112', 
CONVERT(VARCHAR,GETDATE(),14) AS '14', 
CONVERT(VARCHAR,GETDATE(),114) AS '114' 

試圖發佈結果集的圖像,但我需要「獲得超過10個聲望才能發佈圖像」。

5
Select Right(IsNull(Convert(Varchar,GetDate(),100),''),7) 
0

SQL可以執行的時間內聯轉換數據庫

指明MyTime對應的四點15分00秒

SELECT CONVERT(varchar(15), CAST(mytime AS TIME), 100) as my_time from mytable 
相關問題