在我的表中,我有两个字段time(2)类型为:startTime和endTime。
time(2)
startTime
endTime
SELECT startTime, endTime FROM ...
给了我这样的时间:13:00:00. 我想在我的应用程序中显示时间而不用秒,例如13:00。我试过了:SELECT FORMAT(startTime, 'hh:mm') as startTime FROM ...但是当我执行它时,我得到了空值:
13:00:00
13:00
SELECT FORMAT(startTime, 'hh:mm') as startTime FROM ...
startTime _____________ NULL NULL
这很奇怪,因为如果我正常选择我的数据,SELECT startTime FROM ...我会得到:
SELECT startTime FROM ...
startTime ___________ 12:00:00 13:00:00
我究竟做错了什么?
而不是 format() 性能很差,考虑convert(...) 甚至隐式转换。
convert(...)
例子
Declare @t time = '12:00' Select UsingConvert = convert(varchar(5),@t,108) ,UsingImplicit = left(@t,5)
结果
UsingConvert UsingImplicit 12:00 12:00
您需要将冒号转义:为\:. 例如:
:
\:
SELECT FORMAT(startTime, 'hh\:mm') as startTime FROM t
结果:
startTime --------- 12:00 13:00
请参阅db<>fiddle中的示例。