"Mark Douglas" <mark@steelhousemedia.com> writes:
> The following use of DATE_TRUNC returns the wrong value. I called the
> function on 2009-09-02. It should return '2009-09-01 00:00:00' for the
> following usage:
> SELECT DATE_TRUNC('MONTH', CURRENT_DATE);
> It instead returns '2009-08-31 17:00:00.
Really? What timezone setting are you using? I get
postgres=# SELECT DATE_TRUNC('MONTH', CURRENT_DATE);
date_trunc
------------------------
2009-09-01 00:00:00-04
(1 row)
with timezone set to 'America/New_York' or equivalent.
This test might also be instructive:
postgres=# select CURRENT_DATE::timestamptz;
timestamptz
------------------------
2009-09-03 00:00:00-04
(1 row)
regards, tom lane