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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top