[MySQL] 日付の範囲抽出(過去は含まず、現在未来を含む)する方法
朦朧とする意識の中で作った SQL の覚書。
状況
簡単な予約システム。 from ~ to に それぞれ予約時間が入っている。条件
- to は今日以前で
- from は今日以後で
- from-to の範囲に今日を含む
現在時刻: 2014/12/04 19:00
from | to | ||
---|---|---|---|
× | 2014/12/02 19:00 | ~ | 2014/12/03 19:00 |
× | 2014/12/03 19:00 | ~ | 2014/12/04 18:00 |
○ | 2014/12/04 19:00 | ~ | 2014/12/05 19:00 |
○ | 2014/12/05 19:00 | ~ | 2014/12/06 19:00 |
○ | 2014/12/26 19:00 | ~ | 2014/12/29 19:00 |
表にするとこんな感じ
SQL
MySQL
SELECT
*
FROM
table
WHERE
(column_from >= '2014/12/04 19:00' OR column_to >= '2014/12/04 19:00')
錯覚かもしれないけど、これでイケた。元気になったら見直ししたい。(must)
FuelPHPのクエリビルダ
FuelPHP で作っていたので一緒に。括弧の OR 条件ってクエリビルダで出来るのか分からなかったけれど、ちゃんとあった。えらい。
$now = Date::time()->format('mysql');
DB::select()->from('table')
->where_open()
->where('column_from', '>=', $now)
->or_where('column_to', '>=', $now)
->where_close()
->execute();