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

SQL Server 2022中TIME与DATETIME类型格式化行为差异及相关问题咨询

SQL Server 2022中TIME与DATETIME类型格式化行为差异及相关问题咨询

我正在做一个工作项目,一开始打算把时间存储在表的datetimeoffset字段里。但我只关心时间部分,不关心日期,所以本来想用地板日期当占位符。我之前用TIME数据类型时遇到过问题,但现在有人说不会有问题,结果还是出问题了,于是我做了个测试。

我最终需要的格式是h:mmt,比如9:15 AM要显示成9:15a。

我的测试代码如下:

declare @time time = '09:00',
    @date datetime = getdate();
select FORMAT(@time, 'h:mmt'), FORMAT(@date, 'h:mmt')

测试结果是:datetime变量的输出基本符合我的需求(我只需要再套个转小写的函数),完全没问题。但time变量返回的是null。

要让time变量输出结果,我得去掉格式里的"t",还要用\转义冒号,这样才能得到9:00。

所以我的问题是:

  1. 为什么SQL Server 2022在格式化TIME类型时不支持用"t"?
  2. 为什么格式化TIME类型时必须转义冒号,而DATETIME类型不需要?
  3. SQL Server 2022里有没有其他函数可以对TIME类型直接生成我想要的格式(h:mmt)?我知道可以用其他方法实现,但希望能有一站式的解决方案。
  4. 为什么SQL Server 2022对TIME类型和DATETIME类型的处理差异这么大?

备注:内容来源于stack exchange,提问作者John Roa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:08:00