重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になっております。
質問内容は基本的な事かもしれませんがご容赦ください。

あるテーブルにDateTime型のフィールドがあり、Insertした日時を保存しています。
このフィールドに対して、日付のBETWEENや時間のBETWEENで検索かけるにはどうしたら良いのでしょうか。

例えば、
時間は未指定だけど、1月1日から1月31日までのデータを検索
SELECT * FROM table WHERE insertDT BETWEEN '01-01' AND '01-31'

日付は不明だけど、7:00から12:00までのデータを検索する等です。
SELECT * FROM table WHERE insertDT BETWEEN '07:00' AND '12:00'

これら試しましたが、正常な結果が得られず困っています。
不明な部分の代替文字でもあるのでしょうか。

SELECT * FROM table WHERE (insertDT >= '07:00' AND insertDT <= '12:00')
これも試しましたがやはりダメでした。

どなたかご教示の程、よろしくお願い致します。

A 回答 (2件)

なんか中途半端



>時間は未指定だけど、1月1日から1月31日までのデータを検索
今回の例であれば
SELECT * FROM table WHERE MONTH(insertDT) =1;
でいけますが、datetime型は年までもっているのですから
betweenするならそこまで指定する必要があります。

SELECT * FROM table WHERE insertDT BETWEEN '2012-01-01 00:00:00' AND '2012-01-31 23:59:59';

まぁ、時間は無視するならこんな感じでも
SELECT * FROM table WHERE DATE(insertDT) BETWEEN '2012-01-01' AND '2012-01-31';

>日付は不明だけど、7:00から12:00までのデータを検索する等です。

時間の比較なのですから、秒までいれればいけます
SELECT * FROM table WHERE TIME(insertDT) BETWEEN '07:00:00' AND '12:00:00'
    • good
    • 0
この回答へのお礼

お礼遅くなり、申し訳ありませんでした。
様々な日時関数を使う事で解決できそうです。
大変参考になりました。ありがとうございました。

お礼日時:2012/05/14 12:31

>時間は未指定だけど、1月1日から1月31日までのデータを検索


月が1月で判定出来ます。
WHERE DATE_FORMAT(insertDT,'%m')=1
>7:00から12:00までのデータを検索する
WHERE DATE_FORMAT(insertDT,'%H %i') BETWEEN '07 00' AND '12 00'
です。
    • good
    • 0
この回答へのお礼

お礼遅くなり、申し訳ありませんでした。
DATE_FORMAT()を上手く使えばできそうです。
ありがとうございました。

お礼日時:2012/05/14 12:29

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

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