受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上测试
答案 0 :(得分:1)
是的,这似乎很奇怪。
如果你能为pgsql-hackers邮件列表提供补丁,你就有机会修复它。