sql >> Databáze >  >> RDS >> Mysql

Najít příště otevřenou firmu; výpočet hodin mysql

Chcete-li zjistit shop_id's, je otevřen pro NOW()

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

Zastaralé :

Chcete-li najít zítra 's dostupný open_time s:

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

Upravit 2:

Chcete-li najít další dostupný 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`

Upravit :

DATE_FORMAT(*DATE*, '%w') používá formát 0 = Sunday ... 6 = Saturday

Pokud chcete použít formát ISO 1 = Monday ... 7 = Sunday ve vašem day_of_week pole, měli byste svázat php date('N') na váš dotaz (nebo použijte funkci Mysql if IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , ale to je ošklivé)



  1. Spojte více řádků do jednoho spojení MySQL

  2. Jak přečíslovat primární index

  3. Zachycení počtu z dotazu SQL

  4. Omezit číslo stránky stránkování