shop_idを見つけるには、NOW()
で開いています。
SELECT *
FROM `shop_hours`
WHERE `day_of_week` = DATE_FORMAT(NOW(), '%w')
AND CURTIME() BETWEEN `open_time` AND `close_time`
廃止 :
明日を見つけるには 利用可能なopen_time
s:
SELECT *
FROM `shop_hours`
WHERE `day_of_week` = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%w')
編集 2:
次に利用可能なopen_time
を見つけるには s:
SELECT `shop_id`,
MIN(CAST(CONCAT(DATE(DATE_ADD(NOW(), INTERVAL ((7 + DATE_FORMAT(NOW(), '%w') - `day_of_week`) % 7) DAY)), ' ', `open_time`) AS DATETIME)) AS `next_open_datetime`
FROM `shop_hours`
GROUP BY `shop_id`
編集 :
DATE_FORMAT(*DATE*, '%w')
0 = Sunday ... 6 = Saturday
の形式を使用します
ISO形式を使用する場合1 = Monday ... 7 = Sunday
day_of_week
で フィールドには、phpのdate('N')
をバインドする必要があります クエリに(またはMysqlのif関数IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w'))
、しかしそれは醜いです)