我有一个数据库表,存储商店的营业时间作为VARCHAR的时间范围,如'上午9点至下午5点'和'上午9点至下午3点,下午5点至晚上11点'。我想比较这些开放时间和当前时间,所以如果当前时间是下午2点,我将使用PHP回显一个文本,说明商店现已开放,如果当前时间是晚上11:30,商店将显示关闭。
我正在使用Codeigniter,所以如果有用的功能也让我知道!
答案 0 :(得分:3)
您应该使用TIME
数据类型使用2列(一个用于开放时间,一个用于关闭时间):http://dev.mysql.com/doc/refman/5.1/en/time.html
通过这样做,您可以使用BETWEEN
和NOW()
:SELECT * FROM shop WHERE CAST(NOW() AS TIME) BETWEEN open_time AND close_time;
编辑以包含表格定义:
CREATE TABLE shop_hours (
shop_id INT UNSIGNED NOT NULL,
day_of_week INT UNSIGNED NOT NULL, -- 0-6
open_time TIME NOT NULL,
close_time TIME NOT NULL,
PRIMARY KEY(shop_id, day_of_week, open_time, close_time)
);
答案 1 :(得分:1)
我强烈建议使用两个单独的列,一个用于打开时间,一个用于关闭时间。
答案 2 :(得分:1)
以24小时格式使用两列。计算机处理起来更加精明,您将能够使用标准的数字比较。打印时始终可以转换为AM / PM。