我有一個包含1列SQL小時整數值(0,1,2,...,23)的數據集。有什麼辦法可以將這些轉換爲:上午12:00,上午1:00,上午2:00,...,下午11:00?將整數(0,1,2 ...,23)轉換爲小時(上午/下午)
回答
這種表達應該工作:
CASE WHEN [Hour] = 0 THEN '12:00am'
WHEN [Hour] < 12 THEN CAST([Hour] AS VarChar) + ':00am'
WHEN [Hour] = 12 THEN '12:00pm'
ELSE CAST(([Hour]-12) AS VarChar) + ':00pm'
END AS [Time]
隨着SQL它總是將是「硬辦法」。這裏有一個選項(假定與數稱爲num
列):
SELECT CAST(num AS VARCHAR) + ':00' +
CASE WHEN NUM < 12 THEN 'AM' ELSE 'PM' END Time
參見SQLFiddle一個live demo。
你真的真的應該在客戶端上格式化它。這對於SQL Server來說並不是一件簡單的工作,我不明白在T-SQL中做這件事的目的。
DECLARE @t TABLE(i INT);
INSERT @t(i) VALUES(0),(1),(2), ... ,(23);
SELECT LOWER(RIGHT(CONVERT(CHAR(19),DATEADD(HOUR,i,0),0),7)) FROM @t ORDER BY i;
結果:
12:00am
1:00am
2:00am
...
11:00pm
完全同意。只需要一個快速解決方案:) – Ray
也許(可能是太複雜了):
SELECT Hour,
CASE WHEN Hour = 0 THEN '12:00AM'
ELSE CASE WHEN Hour = 12 THEN '12:00PM'
ELSE CASE WHEN Hour < 12
THEN CAST(Hour AS VARCHAR(7)) + ':00AM'
ELSE CAST(Hour - 12 AS VARCHAR(7)) + ':00PM'
END END END AS AM_PM
FROM dbo.Time
您可以附加:00:00
爲整數,並使用CAST
來便利着想它室溫至time
,像這樣:
SELECT CAST(CAST(int_val as VARCHAR(2))+':00:00' as time)
FROM my_table
當您升級到SQL Server 2012中,你將能夠使用TIMEFROMPARTS
功能做同樣的事情,沒有不必要的轉換:
SELECT TIMEFROMPARTS(int_val, 0, 0, 0, 0)
FROM my_table
這仍然不是什麼他們以後;輸出是例如'13:00:00.0000000'。 –
@AaronBertrand這給OP一個「時間」類型的值,他可以根據需要將其轉換爲任何合理的表示。 – dasblinkenlight
- 1. 上午/下午將24位整數轉換爲12小時
- 2. Android將DateTime從上午/下午轉換爲24小時
- 3. 將24小時轉換爲上午/下午格式
- 4. 轉換字符串在12(下午/上午)小時上午下午時間到24小時時間android
- 5. 將上午/下午時間轉換爲時期
- 6. 將日期時間轉換爲上午/下午時間
- 7. 將分鐘自午夜轉換爲上午/下午時間的函數
- 8. 在Joda-Time轉換24小時時間到上午/下午
- 9. 如何將HH:mm:ss轉換爲hh:mm上午/下午在Android
- 10. 轉換12小時hh:毫米上午/下午到24小時hh:毫米
- 11. 如何轉換時間字符串'11:23下午'時間'23:23'
- 12. 如何將時間範圍轉換爲下午或上午時間?
- 13. 轉換時間:分鐘上午/下午到unix時間戳
- 14. 將字符串在24小時內轉換爲12小時上午下午時間
- 15. 轉換日期時間與上午下午到24小時日期格式
- 16. DateTime上午/下午格式轉換爲24h格式
- 17. 爲什麼我不能使用PHP將我的24小時時間轉換爲上午12點/下午時間?
- 18. 我怎樣才能得到小時上午到下午和下午到上午的時間間隔
- 19. Android:我如何將上午和下午格式的時間轉換爲整數秒
- 20. 將文本日期與上午/下午時間轉換爲24小時時間在Excel中非VBA
- 21. Kendo Grid格式上午/下午時間
- 22. 上午/下午到TimeSpan
- 23. 上午/下午設置爲UIDatePicker錯誤
- 24. 將日期轉換爲字符串缺失上午/下午的指示符
- 25. 獲取12小時上午/下午時間
- 26. 計算上午到下午的時間
- 27. 獲取上午/下午在gmt時區
- 28. UILocalNotification setTimeZone上午/下午
- 29. TimePickerDialog和上午或下午
- 30. 上午/下午小寫的MySQL格式化時間
CONCAT在SQL Server 2008中不存在。 –
@aaron我承認我從未使用SQL Server - 現在是否正確? – Bohemian
不,這會導致無效操作(您不能添加整數和字符串)。在發佈之前,您可以在http://sqlfiddle.com/上嘗試您的解決方案... –