[pgsql-jp: 29162] Timestamp型から整数を引く(Select now()-30)
Mashiki
mashiki @ yanah.com
2003年 2月 20日 (木) 12:29:08 JST
Mashikiです。
Postgresql7.2.3までは使えていた以下のSQLが
7.3.1以降、使えなくなってしまいました。
// 30日前を求める
Select now()-30;
7.2.3=> select now()-30;
?column?
------------
2003-01-21
(1 row)
7.3.2=> select now()-30;
ERROR: Unable to identify an operator '-' for types 'timestamp with
time zone' and 'integer'
You will have to retype this query using an explicit cast
もちろん、以下のようにすればうまくいくのですが、
(よく見ると結果は変わっています)
7.3.2=> select now()-'30 day'::interval;
?column?
-------------------------------
2003-01-21 11:48:15.337329+09
(1 row)
これは仕様でしょうか?
7.2.3→7.3.0の変更点で以下の記述は見つけたのですが、
> * The data type timestamp is now equivalent to timestamp without
> time zone, instead of timestamp with time zone.
それ以外、ヒットしそうな変更点は見つかりませんでした。
自分はよく24時間以内に登録されたデータを検索するのに
select * from targetTable where EntryTimestamp > now()-1;
のような書き方をしていたので、ちょっと気になります。
# 7.3.0ではOKだったような気がするのですが、
# 現在、環境がなく確認できません。
環境
OS: MiracleLinux2.1
PostgreSQLはソースからmakeしています。
pgsql-jp メーリングリストの案内