2017-10-13 1 views
1

Ich habe eine Nummer als integer übergeben und möchte es in time konvertieren, und verwenden Sie diese Nummer als Stunde.Cast ganze Zahl mit Stunde zu Zeit in PostgreSQL

Ich habe Lösungen für die Verwendung einer Nummer als Minuten gefunden, aber ich bin nicht vertraut mit PostgreSQL-Syntax. Nicht das, was Sie sicher, hier zu tun:

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

Das Ergebnis wäre:

00:15:00 

Aber ich bin nach einem Weg suchen, um es zu machen:

15:00:00 

Ich habe mit MS SQL für eine ganze Weile, ich bin überrascht, wie viel komplexere PostgreSQL-Syntax ist.

+0

New Terrain scheint immer komplexer auf den ersten. Warte, bis du etwas Erfahrung gesammelt hast. –

Antwort

2

Wenn Ihre Spalte test.czasStunden bedeutet, gibt es einen viel einfacheren Weg. Multiplizieren Sie den Wert interval'1 hour' mit ihm:

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

genau das gewünschte Ergebnis liefert. Funktioniert sogar mit Nachkommastellen.

'01:00' und '1 hour' sind äquivalent interval literals.
Für Werte> 24 erhalten Sie den Rest (ganze Tage sind abgeschnitten) - wie wenn Sie czas%24 verwenden würden.

Verwandte: