我有一个包含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/上尝试您的解决方案... –