преобразовать время с 15:30 в 15:30. Формат времени SQL Server - PullRequest
0 голосов
/ 14 марта 2019

Попытка преобразовать время с 1530 в формат времени 15:30 на сервере SQL.Times = 1530

Я пробовал:

convert(time,LEFT(Times,2)+':'+right(Times,2))

Результаты: 15: 30: 00.0000000

Но это в 24 часа, я хочупреобразовать в 3:30 вечера.И убрать секунды.Есть идеи?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 14 марта 2019

Если вы хотите отформатировать его, вы можете использовать Формат или конвертировать

SELECT FORMAT(GETDATE(), 'HH:MM')

SELECT CONVERT(VARCHAR(10), GETDATE(), 108)

Конвертировать детали: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

1 голос
/ 14 марта 2019

Если вы используете более старую версию 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
0 голосов
/ 14 марта 2019

Если вы работаете со строкой 'чч: мм', то ...

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
0 голосов
/ 14 марта 2019

попробуйте это:

SET @Times ='1530'  
select CONVERT(varchar(15),CAST(CONVERT(datetime,LEFT(@Times,2)+':'+right(@Times,2)) AS TIME),100)
...