From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | abelisto(at)gmail(dot)com |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: BUG #14446: make_date with negative year |
Date: | 2016-12-04 13:40:50 |
Message-ID: | 20161204134050.vsfjbwub6u6jljax@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
abelisto(at)gmail(dot)com wrote:
> Bug reference: 14446
> Logged by: Andy Abelisto
> Email address: abelisto(at)gmail(dot)com
> PostgreSQL version: 9.5.5
> Operating system: Linux Mint
> Description:
>
> with t(x) as (values('1111-11-11 BC'::date)) select make_date(extract(year
> from x)::int, extract(month from x)::int, extract(day from x)::int) from
> t;
> ERROR: date field value out of range: -1111-11-11
make_date() has:
/*
* Note: we'll reject zero or negative year values. Perhaps negatives
* should be allowed to represent BC years?
*/
dterr = ValidateDate(DTK_DATE_M, false, false, false, &tm);
With the attached patch it becomes (needs docs, tests):
with t(x) as (values('1111-11-11 BC'::date),
('00001-11-11 bc'),
('00001-11-11'),
('1111-11-11')
)
select make_date(extract(year
from x)::int, extract(month from x)::int, extract(day from x)::int) from
t;
make_date
───────────────
1111-11-11 BC
0001-11-11 BC
0001-11-11
1111-11-11
(4 filas)
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment | Content-Type | Size |
---|---|---|
make_date_bc.patch | text/plain | 802 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Stehule | 2016-12-04 18:19:39 | Re: BUG #14446: make_date with negative year |
Previous Message | abelisto | 2016-12-04 05:59:39 | BUG #14446: make_date with negative year |