2016-07-18 1 views
-1

J'essaye de convertir un smallnt en format d'heure. J'utilise SQL Server 2005 qui ne prend pas en charge le type de données de temps.Convertir SmallInt en temps

Je stocke le temps comme 1400 qui est un smallint. Lors de la récupération je veux qu'il soit converti en un format d'heure. Tels que 14:00

Toutes les idées ou des conseils sur la question. S'il y a un moyen plus facile de le faire ou si la façon dont j'essaie est possible?

Merci

+1

Voulez-vous ce converti en un varchar '14: 00'? Comment voulez-vous que cela soit converti? – Siyual

+1

Que voulez-vous dire par "format d'heure"? Puisque vous ne pouvez pas retourner le type de données 'time' dans SQL 2005, voulez-vous un varchar? un datetime? –

+0

soit tbh, trouver les moyens possibles avant de prendre une décision @TabAlleman –

Répondre

2

Vous pouvez obtenir un résultat aussi varchar en utilisant ceci:

SELECT 
    RIGHT('0' + CONVERT(varchar(10), yourTime/100), 2) + ':' + 
    RIGHT('0' + CONVERT(varchar(10), yourTime % 100), 2) As timeString 
FROM 
    yourTable 

Vous pouvez également avoir un résultat au format DATETIME comme ceci:

SELECT 
    CONVERT(datetime, CONVERT(varchar(10), yourTime/100)+ ':' + CONVERT(varchar(10), yourTime % 100)) 
FROM 
    yourTable 

En SQL Server 2012+ vous pouvez avoir un résultat dans le format de l'heure:

SELECT 
    TIMEFROMPARTS(yourTime/100, yourTime % 100, 0, 0, 0) As timeFormat 
FROM 
    yourTable 
+0

L'OP mentionne spécifiquement dans sa question qu'il utilise SQL Server 2005, qui ne supporte pas le type de données 'TIME'. – Siyual

+0

Pas mon dv mais 'TIMEFROMPARTS' n'est pas disponible en 2005. –

+0

@MartinSmith Je pense qu'il est disponible à partir de [SQL Server 2012] (https://msdn.microsoft.com/fr-fr/library/hh213398 (v = sql.110) .aspx);). –