Discard millisecond part from timestamp
SqlPostgresqlCastingTimestampRoundingSql Problem Overview
How can I discard/round the millisecond
part, better if the second
part is also removed from a timestamp
w/o timezone
?
Sql Solutions
Solution 1 - Sql
A cast to timestamp(0)
or timestamptz(0)
rounds to full seconds:
SELECT now()::timestamp(0);
Fractions are not stored in table columns of this type.
date_trunc()
truncates (leaves seconds unchanged) - which is often what you really want:
SELECT date_trunc('second', now()::timestamp);
Solution 2 - Sql
Discard milliseconds:
SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp);
> 2019-08-23 16:42:43
Discard seconds:
SELECT DATE_TRUNC('minute', CURRENT_TIMESTAMP::timestamp);
> 2019-08-23 16:42:00
Solution 3 - Sql
if you just want time, here is the code for postgres
SELECT DATE_TRUNC('second', CURRENT_TIMESTAMP::timestamp)::time;
it will return 'time without time zone' data type