Come posso eliminare/arrotondare la parte millisecond
, meglio se la parte second
viene rimossa anche da timestamp
senza timezone
?Discard millisecond part from timestamp
30
A
risposta
68
gettarlo ai timestamp(0)
o timestamptz(0)
per rimuovere frazioni di secondo:
SELECT now()::timestamp(0);
Come @karlgold commentato, questo giri a secondi pieni, e le frazioni non vengono memorizzati se si mantiene operare con questo tipo di dati.
Utilizzare date_trunc()
per esigenze più specifiche.
SELECT date_trunc('second', now()::timestamp);
Questo tronca (lascia secondi invariato). Un'ulteriore manipolazione può reintrodurre secondi frazionari.
Naturalmente, è possibile combinare entrambe le cose - questa volta rimuovendo la seconda parte così:
SELECT date_trunc('minute', now())::timestamp(0);
ma essere consapevoli che l'assegnazione di questo valore a una colonna o una variabile di un altro tipo di dati può comportare altro cast di assegnazione.
Nota che timestamp (0) e timestamptz (0) verranno arrotondati anziché troncati. Usa date_trunc se vuoi conservare il resto del timestamp così com'è. – karlgold
@karlgold commento molto importante grazie – Brettski
@saul: la modifica suggerita è stata disattivata, ma avevi ragione. Ho applicato il tuo chiarimento, grazie –