[pgsql-jp: 36517] 範囲外の値を指定した日付の取り出し

Tamotsu Hasegawa tamotsu @ nippaku.co.jp
2005年 12月 10日 (土) 00:35:25 JST


文字列を日付に変換するデータ型書式設定関数to_dateに範囲外の
値を指定したときの挙動についてです.

マニュアルによると,月として与えられる数値(MM)の範囲は「01〜
12」なのですが,この範囲から外れた値を指定してみたところ,
以下のようになりました.

tamotsu=# select version();
                               version
----------------------------------------------------------------------
 PostgreSQL 7.4.6 on i386-unknown-freebsd4.10, compiled by GCC 2.95.4
(1 row)

tamotsu=# SELECT to_date('2005 13', 'YYYY MM');
  to_date
------------
 2006-01-01
(1 row)

tamotsu=# SELECT to_date('2006 1', 'YYYY MM');
  to_date
------------
 2006-01-01
(1 row)

tamotsu=# SELECT to_date('2006 0', 'YYYY MM');
  to_date
------------
 2006-01-01
(1 row)

tamotsu=# SELECT to_date('2006 -1', 'YYYY MM');
  to_date
------------
 2005-11-01
(1 row)

tamotsu=#

MMに0を指定したときに「2005-12-01」と出力してくれるとうれしい
のですが,そうは問屋が卸してくれませんでした.やはり,手を
抜かずに事前に値を検査,調整してからto_date関数に渡さなければ
いけないようです:-)

日を指定するDDにも0を指定すると同じような動作をするのですが,
何か理由があるのでしょうかね?
いや,範囲外の値を突っ込んでいるんだからバグではないのですが,
せっかくだから...(^_^;)

-- 
Tamotsu Hasegawa <tamotsu @ nippaku.co.jp>




pgsql-jp メーリングリストの案内