一尘不染

SQL Server 格式化时间返回空值

sql

在我的表中,我有两个字段time(2)类型为:startTimeendTime

SELECT startTime, endTime FROM ...

给了我这样的时间:13:00:00. 我想在我的应用程序中显示时间而不用秒,例如13:00。我试过了:SELECT FORMAT(startTime, 'hh:mm') as startTime FROM ...但是当我执行它时,我得到了空值:

startTime
_____________
NULL
NULL

这很奇怪,因为如果我正常选择我的数据,SELECT startTime FROM ...我会得到:

startTime
___________
12:00:00
13:00:00

我究竟做错了什么?


阅读 85

收藏
2022-07-21

共2个答案

一尘不染

而不是 format() 性能很差,考虑convert(...) 甚至隐式转换。

例子

Declare @t time = '12:00'

Select UsingConvert  = convert(varchar(5),@t,108)
      ,UsingImplicit = left(@t,5)

结果

UsingConvert    UsingImplicit
12:00           12:00
2022-07-21
一尘不染

您需要将冒号转义:\:. 例如:

SELECT FORMAT(startTime, 'hh\:mm') as startTime FROM t

结果:

startTime
---------
12:00
13:00

请参阅db<>fiddle中的示例。

2022-07-21