Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Znajdź następnym razem, gdy firma będzie otwarta; Obliczanie godzin mysql

Aby znaleźć identyfikator sklepu, który jest otwarty dla NOW()

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

Przestarzałe :

Aby znaleźć jutro jest dostępny open_time s:

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

Edytuj 2:

Aby znaleźć następny dostępny 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`

Edytuj :

DATE_FORMAT(*DATE*, '%w') używa formatu 0 = Sunday ... 6 = Saturday

Jeśli chcesz użyć formatu ISO 1 = Monday ... 7 = Sunday w swoim day_of_week pole, powinieneś powiązać date('N') php do zapytania (lub użyj funkcji Mysql if IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , ale to jest brzydkie)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę uzyskać unikalny TIMESTAMP dla każdego rekordu w MySQL?

  2. Nieznana kolumna w „klauzula o posiadaniu”

  3. Czy powinienem trzymać się tylko automatycznej kopii zapasowej AWS RDS lub migawek DB?

  4. aws - ec2 - mysql - zatrzymanie instancji, ponowne uruchomienie - zmiana haseł innych użytkowników

  5. Stopwords i pełny tekst logiczny MySQL