Mysql
 sql >> база данни >  >> RDS >> Mysql

Намерете следващия път, когато бизнесът е отворен; mysql изчисляване на часове

За да разберете 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 поле, трябва да свържете date('N') на php към вашата заявка (или използвайте функцията if на Mysql IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , но това е грозно)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL:SELECT метод - но не показва дубликати / GROUP или DISTINCT?

  2. Регистрация на потребител чрез грешка в сервлета

  3. Намерете броя на колоните в таблица

  4. Мониторинг на производителността на MySQL с ClusterControl

  5. Съхранение на излишни външни ключове, за да се избегнат присъединявания