creando timestamp da colonne in postgres
-
26-09-2019 - |
Domanda
ho 2 righe in una colonna, un'alimentazione me la data julian (numero di giorni dal 1 gennaio 1970, con quel giorno essendo 1), e la seconda colonna è il numero di minuti la mezzanotte del giorno corrente ( perché è stato fatto in questo modo, non ho idea).
mi piacerebbe ottenere la mia domanda di sql per creare un timestamp da queste due colonne.
se ho avuto accesso ai dati prima del tempo, avrei potuto fare qualcosa di simile SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'X DAYS' + INTERVAL 'Y MINUTES' AS my_time FROM mytable
, ma dal momento che X e Y sono membri effettivi della tabella sto interrogazione, non è così semplice.
Qualcuno ha qualche suggerimento?
in sostanza, sto cercando la soluzione equivalente [legale]:
SELECT timestamp '1970-01-01 00:00:00' + INTERVAL 'my_col1 DAYS' + INTERVAL 'my_col2 MINUTES' AS my_time FROm mytable
posso avere il mio codice lato server per farlo per me, ma mi piacerebbe che se potessi costruire in mia domanda.
Soluzione
È possibile costruire le stringhe di intervallo e poi gettarli al tipo interval
:
SELECT
timestamp '1970-01-01 00:00:00' +
cast(my_col1 || ' DAYS' AS interval) +
cast(my_col2 || ' MINUTES' AS interval) my_time FROM mytable
Altri suggerimenti
Senza ricorrere alla sostituzione di stringhe o concatenazione di:
SELECT
timestamp '1970-01-01 00:00:00' +
my_col1 * interval '1 DAY' +
my_col2 * interval '1 MINUTE' FROM mytable