试图在 SQL Server 中将时间从 1530 转换为下午 3:30 的时间格式。时间 = 1530
我努力了:
convert(time,LEFT(Times,2)+':'+right(Times,2))
结果:15:30:00.0000000
但现在是 24 小时,我想转换为下午 3:30。并删除秒。有任何想法吗?
提前致谢。
试图在 SQL Server 中将时间从 1530 转换为下午 3:30 的时间格式。时间 = 1530
我努力了:
convert(time,LEFT(Times,2)+':'+right(Times,2))
结果:15:30:00.0000000
但现在是 24 小时,我想转换为下午 3:30。并删除秒。有任何想法吗?
提前致谢。
如果你想格式化它,你可以使用 Format 或 convert
SELECT FORMAT(GETDATE(), 'HH:MM')
SELECT CONVERT(VARCHAR(10), GETDATE(), 108)
如果您运行的是旧版本的 SQL Server,这将起作用:
DECLARE @times TABLE (
String VARCHAR(20),
Numeral TIME,
FriendlyString VARCHAR(20)
)
INSERT INTO @times (String) SELECT '0001'
INSERT INTO @times (String) SELECT '1200'
INSERT INTO @times (String) SELECT '2359'
UPDATE @times
SET Numeral=CONVERT(VARCHAR(20),CONVERT(INT,String)/100) + ':' + RIGHT('00' + CONVERT(VARCHAR(20),CONVERT(INT,String)%100),2)
,FriendlyString=
CONVERT(VARCHAR(20), CASE WHEN (CONVERT(INT,String)/100)%12 = 0 THEN 12 ELSE (CONVERT(INT,String)/100)%12 END ) + ':' +
RIGHT('00' + CONVERT(VARCHAR(20),CONVERT(INT,String)%100),2) + ' ' +
CASE WHEN (CONVERT(INT,String)/100)>=12 THEN 'PM' ELSE 'AM' END
select *
from @times
尝试这个:
SET @Times ='1530'
select CONVERT(varchar(15),CAST(CONVERT(datetime,LEFT(@Times,2)+':'+right(@Times,2)) AS TIME),100)
如果您使用一串 'hh:mm' 工作,那么...
Declare @t VarChar(15) = '15:30'
Declare @h Int = Left(@t,2)
Declare @m Int = Right(@t,2)
Select
Case When @h > 11 Then Cast((iif(@h=12,24,@h) - 12) As VarChar(15)) + ':' + Cast(@m As VarChar(2)) + ' PM' Else @t + ' AM' End As time