如何在sql中以AM / PM格式获取当前时间



查询我正在使用=>

replace(substring(CONVERT(varchar,SWITCHOFFSET(SYSDATETIMEOFFSET(), '+05:30'),100),13,LEN(CONVERT(varchar,getdate(),100))), ' +05:30','') 

我得到的输出=> 5:40PM

但我想要输出=> 5:40 PM

那么我怎样才能得到这个输出

您可以使用

stuff()在 AM/PM 之前添加空格。还可以通过将substring()长度设置为 8 来删除replace()

select stuff(substring(convert(varchar(30),switchoffset(sysdatetimeoffset(), '+05:30'),100),13,8),6,0,' ')

如果要删除前导空格,可以将上述内容括在 ltrim() 中。


您还可以使用两个replace()以及转换为time和样式100

select replace(replace(convert(varchar(8),convert(time,switchoffset(sysdatetimeoffset(), '+05:30')),100),'AM',' AM'),'PM',' PM')

在 sql Server 2012+ 中,您可以使用format()

select format(switchoffset(sysdatetimeoffset(), '+05:30'),'h:mm tt')

但是format()可以慢一点,看看这里:format()很好,但是...... - 亚伦·伯特兰


Rextester 演示:http://rextester.com/NITZM59410

您可以使用 100 转换,如下所示

select CONVERT(varchar(8),CAST(getdate() AS TIME),100)

最新更新