Обсуждение: BUG #15145: date time default value issues

Поиск
Список
Период
Сортировка

BUG #15145: date time default value issues

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      15145
Logged by:          Paj Dib Xyooj
Email address:      dibxyooj96@gmail.com
PostgreSQL version: 9.4.5
Operating system:   (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Description:

i set column "document_datenow timestamp with time zone NOT NULL DEFAULT
now()"
but the values that like this "0001-12-31 23:42:04+06:42:04 BC"


Re: BUG #15145: date time default value issues

От
"David G. Johnston"
Дата:
On Friday, April 6, 2018, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15145
Logged by:          Paj Dib Xyooj
Email address:      dibxyooj96@gmail.com
PostgreSQL version: 9.4.5
Operating system:   (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Description:

i set column "document_datenow timestamp with time zone NOT NULL DEFAULT
now()"
but the values that like this "0001-12-31 23:42:04+06:42:04 BC"

What does typing "date" at your o/s command line show?

This is so unusual I don't know really where to start.  But 9.4.5 is an unsupported minor release and your O/S version seems older as well.  If this isn't a production machine you need to diagnose I'd suggest installing recent O/S and PostgreSQL, possibly from packages, and save yourself some grief.  Otherwise, after upgrading to 9.4.17 (though I would backup the existing binaries just in case) you probably should volunteer considerably more detail about your environment and what you were doing to it before you discovered this behavior.  Providing a self-contained script and output transcript would be good too.

David J.

Re: BUG #15145: date time default value issues

От
"David G. Johnston"
Дата:
On Friday, April 6, 2018, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Friday, April 6, 2018, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15145
Logged by:          Paj Dib Xyooj
Email address:      dibxyooj96@gmail.com
PostgreSQL version: 9.4.5
Operating system:   (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Description:

i set column "document_datenow timestamp with time zone NOT NULL DEFAULT
now()"
but the values that like this "0001-12-31 23:42:04+06:42:04 BC"

What does typing "date" at your o/s command line show?


So, that a constant time is used is not unusual, it's documented.  Now() is a function that gets resolved at default creation.  You need to use "current_timestamp" literal special value if you want insertion time defaults.   But since you didn't create the table in BC with an odd time zone offset either you gave bad example or there is still something wrong in your environment.

David J.

Re: BUG #15145: date time default value issues

От
Marko Tiikkaja
Дата:
On Sat, Apr 7, 2018 at 12:35 PM, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Friday, April 6, 2018, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Friday, April 6, 2018, PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      15145
Logged by:          Paj Dib Xyooj
Email address:      dibxyooj96@gmail.com
PostgreSQL version: 9.4.5
Operating system:   (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Description:

i set column "document_datenow timestamp with time zone NOT NULL DEFAULT
now()"
but the values that like this "0001-12-31 23:42:04+06:42:04 BC"

What does typing "date" at your o/s command line show?


So, that a constant time is used is not unusual, it's documented.  Now() is a function that gets resolved at default creation.

That's not correct.  You're thinking of  DEFAULT 'now'.  DEFAULT now() works just fine.


.m

Re: BUG #15145: date time default value issues

От
Tom Lane
Дата:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Friday, April 6, 2018, PG Bug reporting form <noreply@postgresql.org>
> wrote:
>> i set column "document_datenow timestamp with time zone NOT NULL DEFAULT
>> now()"
>> but the values that like this "0001-12-31 23:42:04+06:42:04 BC"

> This is so unusual I don't know really where to start.

Poking about in the tz database, I notice that +06:42:04 is the UTC offset
shown for Asia/Bangkok before 1920 (ie, before adoption of a standard time
zone offset).  So, if the database's time zone were set to Asia/Bangkok
and then you put in a time around the start of the common era:

regression=# set timezone = 'Asia/Bangkok';
SET
regression=# select '0001-12-31 17:00 UTC BC'::timestamptz;
           timestamptz           
---------------------------------
 0001-12-31 23:42:04+06:42:04 BC
(1 row)

Now this just moves the mystery to another place: how'd that value get
entered?  I'd speculate about perhaps using to_timestamp() with a wrong
format string, causing what should have been year 2001 to be read as 0001,
or something like that.  The OP hasn't shown us what he did to enter this
value, so it's all speculation.  The table definition is nigh irrelevant,
though :-(

            regards, tom lane