Cách tốt nhất để lưu trữ thời gian mở và đóng cửa hàng trong cơ sở dữ liệu cũng như cách tính thời gian trong PHP?Làm cách nào để tìm hiểu xem cửa hàng mở cửa hay đóng cửa - giao dịch hàng giờ?
tôi đã đưa ra thiết kế bảng này:
+----+---------+----------+-----------+------------+
| id | shop_id | week_day | open_hour | close_hour |
+----+---------+----------+-----------+------------+
| 1 | 3 | 1 | 15:00:00 | 23:00:00 |
| 2 | 3 | 2 | 15:00:00 | 23:00:00 |
| 3 | 3 | 3 | 18:00:00 | 02:00:00 |
| 4 | 3 | 4 | 18:00:00 | 02:00:00 |
| 5 | 3 | 5 | 18:00:00 | 03:00:00 |
+----+---------+----------+-----------+------------+
+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| shop_id | int(11) | NO | | NULL | |
| week_day | int(11) | NO | | NULL | |
| open_hour | time | NO | | NULL | |
| close_hour | time | NO | | NULL | |
+------------+---------+------+-----+---------+----------------+
Ví dụ, vào hôm thứ Ba (week_day = 2
) nó mở cửa vào 15:00 và đóng cửa tại 23:00 (thứ ba).
Vào thứ Tư (`week_day = 2 '), mở cửa lúc 6 giờ tối và đóng sau nửa đêm lúc 2 giờ sáng, thứ Năm. Thời gian đóng cửa lúc nửa đêm (00:00:00 hoặc sau) nên được lưu trữ trong cơ sở dữ liệu như thế nào?
Giả sử khách hàng muốn đặt hàng (shop_id = 3
) lúc 10 giờ tối Thứ Ba, họ sẽ có thể làm như vậy theo dữ liệu của cơ sở dữ liệu. Tuy nhiên, nếu khách hàng muốn đặt hàng vào lúc 1 giờ sáng Thứ Năm nhưng cơ sở dữ liệu cho thấy week_day = 3
, nó đóng tại 02:00:00
Làm cách nào để viết PHP để tìm hiểu xem cửa hàng có mở hay không? nó có vẻ phức tạp!
Tôi có cần thay đổi thiết kế bảng để viết dễ dàng hơn trong PHP không?
Cảm ơn ví dụ: Nếu cửa hàng mở cửa từ 8 giờ tối đến 12 giờ sáng - có phải là 20:00:00 đến 23:59:59 không? –
Cải thiện tốt cho strucutre. Với cấu trúc bảng này, bạn có thể sử dụng một SQL động hơn, giống như cái tôi đã gợi ý trong câu trả lời của mình. –
@ user791022: Vâng, theo ý tưởng này. Bởi vì, ngày dương lịch tiến vào lúc 00:00:00 trong các máy. –