dポイントプレゼントキャンペーン実施中!

PostgreSQLのあるテーブルで「開始時刻」と「終了時刻」というフィールドがあり、timestamp with timezone(例:2008-07-31 07:00:00+09)でデータを持っています。

例えば、日付に関係なく13:00から15:00までのデータを抽出したい場合、SQLのWHERE句にはどのように記述すればよろしいのでしょうか?

A 回答 (3件)

それなら早く言ってよ(笑)


to_char(開始時刻, 'HH24:MI') >= '13:30'
AND to_char(終了時刻, 'HH24:MI') <= '15:40'

http://www.postgresql.jp/document/pg734doc/user/ …

参考URLの文章の中に関連事項のリンクもあったはず。
    • good
    • 0
この回答へのお礼

大変失礼いたしました。(汗)
説明不足で申し訳ありません。

回答にあったとおりの方法で思い通りの結果が得られました!
併せて参考URLも熟読したいとしたいと思います。

ありがとうございました。

お礼日時:2008/11/13 12:45

>例:13時30分から15時40分等



そういった要件もあるなら、最初に提示すれば#1さんがアドバイスしてくれたと思いますよ?

to_char関数
date_trunc関数

などで調べてみては?
    • good
    • 0
この回答へのお礼

私の説明不足でした。

>to_char関数
>date_trunc関数

上記の関数はWebで結構ヒットしたのですが、WHERE句での実例集が少なくイメージできませんでした(汗)

失礼いたしました。

お礼日時:2008/11/13 12:50

【例】


date_part('hour',開始時刻) between 13 and 15

http://www.postgresql.jp/document/pg734doc/user/ …

あんまり古いバージョンだと関数が使えないかも知れません。
最近のものなら大丈夫でしょう。当方は8.2で確認済みです。

この回答への補足

早速のご回答ありがとうございます。
当方のは8.1ですが構文は使用できました。

Where date_part('hour',開始時刻) >= 13 AND date_part('hour',終了時刻) < 15

で13時から15時までのデータは抽出できたのですが、分も合わせて抽出するにはどのようにしたらよいか教えていただけますでしょうか?

例:13時30分から15時40分等

WEBで調べてみたのですがdate_partの引数「hour」のところで時間+分の
値がなかったので、どう指定したらいいかわかりませんでした。

よろしくお願いいたします。

補足日時:2008/11/12 18:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す