• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:時間の比較(sql))

SQLで予約時間の比較を行う方法

このQ&Aのポイント
  • 予約システムの時間を管理する際に、ある値から1時間引いた時間を利用したい場合、どのように記述すればいいでしょうか?また、予約時間の制約を設けたい場合はどのように処理すれば良いでしょうか?
  • 時間を比較する際には、SQLの演算子と関数を利用します。具体的には、「- INTERVAL '1' HOUR」を用いて1時間を引くことができます。
  • 具体的なクエリの例として、予約時間の候補を納めたテーブル『timeTpl』と予約済みのデータを収めたテーブル『booked』があるとします。予約可能な時間を取得するためには、予約時間が『timeTpl』の値よりも30分後以降で、かつ1時間以内であるという条件を設けることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

timediff関数? Ver4.1で使えるから、それ以降も大丈夫。 t.bookTime < b.rsvTime and timediff( t.bookTime, b.rsvTime ) = '01:00:00' ※厳密にはTIME_FORMATで整形しないと端数誤差が生じます。 #蛇足ですが、SQL文書くときは等号・不等号・カンマの後に #半角スペース1個入れると可読性が良くなると思います。

参考URL:
http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.html
hayaken73
質問者

お礼

アドバイスを参考に以下のようにアレンジしたら うまくやりたいことができました。 select * from timeTpl as t left join booked as b on t.bookTime>=b.rsvTime and t.bookTime<b.finishTime || t.bookTime < b.rsvTime and timediff( b.rsvTime, t.bookTime) <'01:00:00' ←ここ また記述に関する事も親切にご指導いただき感謝いたします。 ありがとうございました。

hayaken73
質問者

補足

現在教えていただいた内容でチェック中ですが、 少し私がやろうとしている事からずれているような気がします。 (たぶんですが) 私がやりたいのは、 t.bookTimeから1時間引いた時間を仮に(A)とすると、 t.bookTime < b.rsvTime and t.bookTime < (A)、みたいに使いたいのです。 どうでしょうか?私の理解が浅いのでしょうか? それとも少し質問に対して回答にズレがでたのでしょうか? よろしくお願いします。

その他の回答 (1)

回答No.2
hayaken73
質問者

お礼

参考になるサイトのご紹介いただきありがとうございました。 助かります。