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

T-SQL如何将float型时间数值转换为Excel同款12小时制带AM/PM格式

实现方案

原理说明

Excel的时间存储逻辑为将完整1天(24小时)记为数值1,你表中的TimeField浮点值本质是目标时间占全天的比例,和SQL Server中datetime类型的小数部分规则完全匹配,直接转换后格式化即可得到和Excel一致的效果。

适用SQL Server 2012及以上版本(推荐)

直接使用FORMAT函数实现12小时制带AM/PM标识的格式化输出:

SELECT 
    LocCd,
    TimeField,
    FORMAT(CAST(TimeField AS DATETIME), 'h:mm:ss tt') AS FormattedTime
FROM tablename;

适用SQL Server 2008及更早版本(无FORMAT函数)

使用CONVERT函数搭配样式码109截取时间部分:

SELECT 
    LocCd,
    TimeField,
    LTRIM(RIGHT(CONVERT(VARCHAR(30), CAST(TimeField AS DATETIME), 109), 11)) AS FormattedTime
FROM tablename;

异常场景处理

如果你的TimeField存在大于1的取值(即包含完整天数的数值),仅需要提取时间部分的话,对TimeField做取模1处理即可:

-- 以FORMAT版本为例,旧版本同理替换CAST部分即可
FORMAT(CAST(TimeField % 1 AS DATETIME), 'h:mm:ss tt')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:27:03