-2
votes

Convertir du temps de 1530 en SQL Server Format Time 3h30

Essayer de convertir le temps de 1530 au format temporel de 15h30 dans SQL Server. Times = 1530

J'ai essayé: xxx

résultats: 15: 30: 00.0000000

Mais il se trouve dans 24 heures, je veux convertir en 15h30. Et supprimer des secondes. Des idées?

Merci d'avance.


4 commentaires

Est 1530 une chaîne ou int. Que ressemblerait à 9h30 0930 ou 930?


Dupliqué possible de Format de l'heure dans SQL Server


Le temps n'a pas de format . Si vous souhaitez un format spécifique, vous avez besoin d'une chaîne et non d'une heure.


C'est une chaîne. Désolé de ne pas clarifier. Merci.


4 Réponses :


2
votes

Si vous souhaitez le formater, vous pouvez utiliser le format ou convertir

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

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


2 commentaires

Cela ne concerne que la partie Format finale. Il ne répond pas à la question de la conversion. En outre, le format () doit être utilisé avec parcimonie.


En outre, HH vous donnera 24 heures de temps. Mm vous donnera mois pas minute et vous avez oublié TT pour AM / PM



1
votes

Si vous exécutez une ancienne version de SQL Server, cela fonctionnera:

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


1 commentaires

Ceci est incroyable de la façon dont sa construction est convertie.



0
votes

Essayez ceci:

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


1 commentaires

FYI, cela ne fonctionne pas si une chaîne de caractères <4 est fournie



0
votes

Si vous travaillez d'une chaîne de 'HH: mm' alors ...

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 commentaires