Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Finden Sie das nächste Mal, wenn das Geschäft geöffnet ist; mysql stunden berechnung

Um die shop_id's herauszufinden, ist das NOW() offen

SELECT *
  FROM `shop_hours`
 WHERE `day_of_week` = DATE_FORMAT(NOW(), '%w')
   AND CURTIME() BETWEEN `open_time` AND `close_time`

Veraltet :

Um morgen zu finden ist open_time verfügbar s:

SELECT *
  FROM `shop_hours`
 WHERE `day_of_week` = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%w')

Bearbeiten 2:

Um die nächste verfügbare open_time zu finden 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`

Bearbeiten :

DATE_FORMAT(*DATE*, '%w') verwendet das Format 0 = Sunday ... 6 = Saturday

Wenn Sie das ISO-Format verwenden möchten 1 = Monday ... 7 = Sunday in Ihrem day_of_week Feld, sollten Sie das date('N') von php binden zu Ihrer Abfrage (oder verwenden Sie die if-Funktion von Mysql IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , aber das ist hässlich)