[pgsql-jp: 29182] Re: Timestamp型から整数を引く(Select now()-30)

Mashiki mashiki @ yanah.com
2003年 2月 20日 (木) 21:16:37 JST


 Mashikiです。

和田さん返信ありがとうございます。

>> 自分はよく24時間以内に登録されたデータを検索するのに
>> 
>> select * from targetTable where EntryTimestamp > now()-1;
>
>-1することで結果がdate型になってたのなら、これだと「24時間以内」
>にはならないと思うのですが。

そうですね、今回はじめて気がつきました。

7.2.3=> select to_char(now()-30,'yyyy/mm/dd hh24:mi:ss');
       to_char
---------------------
 2003/01/21 00:00:00
(1 row)


>元々 7.2.3でも timestamp(tz) - int は定義されていないので、
>timestamp(tz) から date への cast が自動的に行なわれていたのを
>しなくなった、ということのようです。HISTORYにはっきりしたのが
>ありませんが、Date/time/timezone improvements (Thomas) でしょうか。

ああ、見落としてました。ここらへんのThomasさんの変更はなんかみんな
関係ありそうな気がします。

>int を勝手に日数と解釈していたのを、やめた、ということで。

佐藤さんのSQL

# select now()::date-30;

が通るので、「-」演算子の左側がDate型なら、「int を勝手に日数」
は有効みたいです。結局

>timestamp(tz) から date への cast が自動的に行なわれていたのを
>しなくなった

ということですね。
なぜ、こうなったかはわからないですが、どちらでも動くように
SQLを直すほうがいいみたいですね。ありがとうございました。



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