[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 メーリングリストの案内