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