-1
this questionに触発されています。PostgreSQLのエンコードBCの日付
年、月、日(年が負の場合)を簡単な方法でBCの日付にエンコードすることはできますか?
select make_date(1,1,1) - interval '11 years';
select format('%s-%s-%s BC', '0011','01','01')::date;
が、明らかにそれが最善のアプローチではありません。
select make_date(-11,1,1);
ERROR: date field value out of range: -11-01-01
ありのようないくつかの選択肢があるような直接的な方法を試し
。
だから、バグのいくつかの種類のように思える:
select extract(year from '0011-01-01 BC'::date);
╔═══════════╗
║ date_part ║
╠═══════════╣
║ -11 ║
╚═══════════╝
が、エラーの原因となっmake_date
機能で今年の負の値を使用して。
テスト済みPostgreSQL 9.5
'make_date(1、-1,1);および' ERROR:日付フィールドの値が範囲外です:1--1-01'のようなエラーメッセージを見てください)、 'make_date'関数'cast(format( '%s-%s-%s'、$ 1、$ 2、$ 3)のように)は完全に間違っています。 – Abelisto