sql >> Database >  >> RDS >> Mysql

Zoek de volgende keer dat het bedrijf open is; mysql uren berekening

Om shop_id's te achterhalen, staat dat open voor NOW()

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

Verouderd :

Om morgen te vinden 's beschikbaar open_time s:

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

Bewerken 2:

Om de volgende beschikbare open_time te vinden 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`

Bewerken :

DATE_FORMAT(*DATE*, '%w') gebruikt het formaat 0 = Sunday ... 6 = Saturday

Als u het ISO-formaat 1 = Monday ... 7 = Sunday . wilt gebruiken in je day_of_week veld, moet u php's date('N') . binden op uw vraag (of gebruik Mysql's if-functie IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , maar dat is lelijk)



  1. CSV importeren in MySQL Workbench

  2. Wat is het jaar 2038-probleem?

  3. hoe cte-waarde toe te wijzen aan variabele

  4. Tekstuitvoer van een functie gebruiken als nieuwe query