在PostgreSQL中编码BC日期

时间:2016-12-03 16:11:17

标签: postgresql

this question的启发。

是否有可能以简单的方式将年,月,日(年份为负)编码到BC日期,没有技巧?

尝试直接的方式,如

select make_date(-11,1,1);
ERROR:  date field value out of range: -11-01-01

有以下几种选择:

select make_date(1,1,1) - interval '11 years';
select format('%s-%s-%s BC', '0011','01','01')::date;

但显然这不是最佳方法。

所以它似乎是某种错误:

select extract(year from '0011-01-01 BC'::date);
╔═══════════╗
║ date_part ║
╠═══════════╣
║       -11 ║
╚═══════════╝

但在导致错误的make_date函数中使用年份的负值。

在PostgreSQL 9.5上测试

1 个答案:

答案 0 :(得分:1)

是的,这似乎很奇怪。

如果你能为pgsql-hackers邮件列表提供补丁,你就有机会修复它。