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

SQL Server使用FORMAT格式化time(2)字段返回NULL值问题

写法错误说明

FORMAT()函数的设计用途是格式化数值类型字段(比如实现千分位分隔、指定小数位数),不支持直接传入time类型字段做时间格式化,传入类型不匹配时函数会直接返回NULL,这就是你查询结果全是空值的核心原因。
额外说明:即使是在支持FORMAT()处理时间类型的数据库(比如SQL Server)里,你写的格式符hh:mm也存在问题:小写hh代表12小时制的小时,如果你要展示24小时制的时间需要用大写HH。

解决方法

你可以根据自己使用的数据库,选择对应正确的时间格式化函数:

  • MySQL / MariaDB 场景:使用DATE_FORMAT()函数,注意对应占位符不要写错,24小时制小时用%H,分钟用%i
SELECT DATE_FORMAT(startTime, '%H:%i') AS startTime FROM 你的表名;
  • SQL Server 场景:优先用性能更好的CONVERT()函数,也可以用适配时间类型的FORMAT()写法
-- CONVERT写法,108是hh:mm:ss的格式编码,取前5位正好是时:分
SELECT CONVERT(VARCHAR(5), startTime, 108) AS startTime FROM 你的表名;

-- FORMAT正确写法,注意用大写HH表示24小时制
SELECT FORMAT(startTime, 'HH:mm') AS startTime FROM 你的表名;
  • PostgreSQL 场景:使用TO_CHAR()函数
SELECT TO_CHAR(startTime, 'HH24:MI') AS startTime FROM 你的表名;

如果不想写数据库方言相关的SQL,也可以直接在应用层处理:查询时直接读原始的startTime字段,拿到类似13:00:00的结果后,截取字符串前5位就能得到13:00的展示效果,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:19:07