2012-04-18 7 views

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.

+10

Nota che timestamp (0) e timestamptz (0) verranno arrotondati anziché troncati. Usa date_trunc se vuoi conservare il resto del timestamp così com'è. – karlgold

+0

@karlgold commento molto importante grazie – Brettski

+0

@saul: la modifica suggerita è stata disattivata, ma avevi ragione. Ho applicato il tuo chiarimento, grazie –