Frage

ich habe 2 Zeilen in einer Spalte, eine Fütterung mir das julianische Datum (Anzahl der Tage seit dem 1. Januar 1970, mit dem Tag 1 ist), und die zweite Spalte ist die Anzahl der Minuten nach Mitternacht des aktuellen Tages ( warum es so gemacht wurde, ich habe keine Ahnung).

ich möchte meine SQL-Abfrage erhalten einen Zeitstempel erstellen aus diesen beiden Spalten.

, wenn ich Zugriff auf die Daten habe vor der Zeit, ich so etwas wie SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable tun könnte, aber da X und Y tatsächliche Mitglieder der Tabelle sind die Abfrage ich bin, es ist nicht so einfach.

jemand irgendwelche Vorschläge?

im Wesentlichen, ich bin auf der Suche für die äquivalente [juristische] Lösung:

SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'my_col1 DAYS' + INTERVAL 'my_col2 MINUTES' AS my_time FROm mytable

ich kann mein serverseitigen Code bekommen es für mich zu tun, aber ich würde es lieben, wenn ich es in meiner Anfrage bauen könnte.

War es hilfreich?

Lösung

Sie können die Intervall-Strings konstruieren und warfen sie dann auf den interval Typen:

SELECT
    timestamp '1970-01-01 00:00:00' +
    cast(my_col1 || ' DAYS' AS interval) +
    cast(my_col2 || ' MINUTES' AS interval) my_time FROM mytable

Andere Tipps

Ohne auf String-Ersetzung oder Verkettung:

SELECT
    timestamp '1970-01-01 00:00:00' +
    my_col1 * interval '1 DAY' +
    my_col2 * interval '1 MINUTE' FROM mytable
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top