2017-10-13 17 views
1

J'ai un nombre passé comme integer et je voudrais le convertir en time, et utiliser ce nombre comme heure.Transmettre un entier avec une heure à PostgreSQL

J'ai trouvé des solutions pour utiliser un nombre de minutes, mais je ne connais pas la syntaxe de PostgreSQL. Je ne sais pas ce qu'il faut faire ici:

select CAST(to_char(czas, 'FM99909:99') AS TIME WITHOUT 
TIME ZONE)::TIME from test 

Le résultat serait:

00:15:00 

Mais je suis à la recherche d'une façon de le faire:

15:00:00 

Je travaille avec MS SQL depuis un certain temps, je suis surpris de voir à quel point la syntaxe de PostgreSQL est plus complexe.

+0

Nouveau terrain semble toujours plus complexe au premier abord. Attendez d'avoir acquis de l'expérience. –

Répondre

2

Si votre colonne test.czas est censée signifier heures, il y a un moyen beaucoup plus simple. Multiplier la valeur interval'1 hour' avec elle:

SELECT (interval '01:00' * czas)::time FROM test; 

produit exactement le résultat souhaité. Fonctionne même avec des chiffres fractionnaires.

'01:00' et '1 hour' sont équivalents interval literals.
Pour les valeurs> 24 vous obtenez le reste (les jours complets sont coupés) - comme si vous utilisiez czas%24.

connexes: