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