Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm lần tiếp theo doanh nghiệp mở cửa; tính toán giờ của mysql

Để tìm hiểu shop_id's, chương trình đó được mở cho NOW()

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

Đã lỗi thời :

Để tìm ngày mai có sẵn open_time s:

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

Chỉnh sửa 2:

Để tìm open_time có sẵn tiếp theo 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`

Chỉnh sửa :

DATE_FORMAT(*DATE*, '%w') sử dụng định dạng 0 = Sunday ... 6 = Saturday

Nếu bạn muốn sử dụng định dạng ISO 1 = Monday ... 7 = Sunday trong day_of_week của bạn , bạn nên ràng buộc date('N') của php cho truy vấn của bạn (hoặc sử dụng hàm if của Mysql IF(DATE_FORMAT(NOW(), '%w') = 0, 7, DATE_FORMAT(NOW(), '%w')) , nhưng điều đó thật xấu xí)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MSQL:Làm cách nào để ghi đè mục nhập chỉ khi mục nhập mới cao hơn? khác tạo mục nhập mới

  2. Làm thế nào để sử dụng Regexp trong MySQL Replace Commands?

  3. gói giao thức không theo thứ tự

  4. Lưu mảng trong cơ sở dữ liệu hoặc tạo các cột khác nhau

  5. Hiển thị dữ liệu MYSQL từ một menu