我到处研究这个,但我似乎无法找到它。
我有一个名为OPEN_TIME的专栏,其中包含军事时间,例如:
1900-01-01 23:00:00.000
我只想提取时间,这是我成功完成的:
LTRIM(RIGHT(CONVERT(varchar, OPEN_TIME, 100), 7))
但是,这给了我一个时间:
11:00PM
我想在AM / PM之前放一个空格,看起来像是:
11:00 PM
不确定这是否像它看起来那么简单?任何建议将不胜感激。
答案 0 :(得分:2)
如果2012+你可以使用Format()
Declare @Open_Time DateTime = '1900-01-01 23:00:00.000'
Select Format(@Open_Time,'hh:mm tt')
返回
11:00 PM
我应该注意到Format()的性能并不为人所知。
答案 1 :(得分:1)
在任何版本的SQL Server中,您都可以使用REPLACE
函数
REPLACE(LTRIM(RIGHT(CONVERT(varchar, OPEN_TIME, 100), 7)),'PM',' PM')
答案 2 :(得分:0)
如果您不使用2012或不想使用Format,则可以使用STUFF完成此操作。
Declare @Open_Time DateTime = '1900-01-01 23:00:00.000'
SELECT
STUFF(
LTRIM(RIGHT(CONVERT(VARCHAR, @OPEN_TIME, 100), 7)),
LEN(LTRIM(RIGHT(CONVERT(VARCHAR, @OPEN_TIME, 100), 7))) - 1,
0,
' ')