You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何将时间转换为小时数+AM/PM格式?

在SQL Server中转换时间为“小时 AM/PM”格式的解决办法

嘿,这个需求其实很容易实现!在SQL Server里,我们可以用两种方式来搞定,取决于你使用的SQL Server版本:

方法1:使用FORMAT()函数(SQL Server 2012及以上版本)

这是最简洁的方式,直接用内置的FORMAT()函数指定自定义格式字符串就行。针对你的需求,格式符h tt正好匹配你要的输出:

  • h:表示12小时制的小时数,不带前导零(比如输出9而不是09)
  • tt:自动根据时间的上午/下午输出AM或PM

给你一个针对你输入时间的示例:

SELECT 
    FORMAT(CAST('2020-01-01 09:01:00.000' AS DATETIME), 'h tt') AS FormattedTime,
    FORMAT(CAST('2020-01-03 18:01:00.000' AS DATETIME), 'h tt') AS FormattedTime

执行这个语句后,你会得到期望的结果:9 AM 和 6 PM。

如果是从表字段里读取时间,直接替换成字段名即可:

SELECT FORMAT(YourDateTimeColumn, 'h tt') AS FormattedHourPeriod
FROM YourTableName

方法2:兼容老版本SQL Server(2012之前)

如果你用的是SQL Server 2008或者更早的版本,FORMAT()函数还没被引入,这时候可以结合DATEPART()和CASE语句来实现:

SELECT 
    CASE 
        WHEN DATEPART(HOUR, YourDateTimeColumn) < 12 THEN 
            CAST(DATEPART(HOUR, YourDateTimeColumn) AS VARCHAR(2)) + ' AM'
        ELSE 
            CAST(DATEPART(HOUR, YourDateTimeColumn) - 12 AS VARCHAR(2)) + ' PM'
    END AS FormattedHourPeriod
FROM YourTableName

这个逻辑很直观:判断当前小时数,上午时段直接取原小时数加AM;下午时段则用小时数减12后加PM,同样能得到你要的格式。

内容的提问来源于stack exchange,提问作者Lookup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:27:47