Php 在mySQL数据库中存储时间范围并与当前时间进行比较
我有一个数据库表,将商店的营业时间存储为VARCHAR格式的时间范围,如“9am-5pm”和“9am-3pm,5pm-11pm”。我想将这些开放时间与当前时间进行比较,因此,如果当前时间是下午2点,我将使用PHP来回显一个文本,说明商店现在已经开放,如果当前时间是晚上11:30,商店将显示为关闭Php 在mySQL数据库中存储时间范围并与当前时间进行比较,php,javascript,mysql,codeigniter,time,Php,Javascript,Mysql,Codeigniter,Time,我有一个数据库表,将商店的营业时间存储为VARCHAR格式的时间范围,如“9am-5pm”和“9am-3pm,5pm-11pm”。我想将这些开放时间与当前时间进行比较,因此,如果当前时间是下午2点,我将使用PHP来回显一个文本,说明商店现在已经开放,如果当前时间是晚上11:30,商店将显示为关闭 如何将当前时间与表中的开放时间范围进行比较 我存储时间范围的方法是否合适 我正在使用Codeigniter,所以如果有有用的函数,也请告诉我 您应该使用两列(一列用于打开时间,一列用于关闭时间),两列都
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)
);
您应该使用两列(一列用于打开时间,一列用于关闭时间),两列都使用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)
);
我强烈推荐两个单独的栏,一个用于开始时间,一个用于结束时间。我强烈推荐两个单独的栏,一个用于开始时间,一个用于结束时间。使用两个24小时格式的栏。计算机进行处理更为明智,你将能够使用标准的数值比较。打印时始终可以转换为AM/PM。使用两列24小时格式。计算机进行处理更为明智,你将能够使用标准的数值比较。打印时,您始终可以转换为AM/PM。如果将其存储在MySQL中,使用MySQL日期/时间函数,您会感觉更好。如果将其存储在MySQL中,使用MySQL日期/时间函数,您会感觉更好。我应该如何处理像“上午9点到下午1点”这样的时间间隔,3pm-9pm’?有些商店只有一个时间范围,有些商店有两个时间范围,所以我需要一个通用的方法,适用于单个和多个时间范围。每个商店的多行将支持这一点。你的PK必须包括shop\u id、open\u time、close\u time
我认为增加一行可能会增加查询时间,因为每行都有很长的公式要计算,而增加时间范围的重复行可能会增加计算量。如果我决定最多有两个时间范围,4列是否适用于开放时间1、关闭时间1、开放时间2、关闭时间2?我应该如何处理像“上午9点到下午1点、下午3点到晚上9点”这样的时间间隔?有些商店只有一个时间范围,有些商店有两个,所以我需要一个通用的方法,可以同时适用于单个和多个时间范围。每个商店的多行将支持这一点。你的PK必须包括shop\u id、open\u time、close\u time
我认为增加一行可能会增加查询时间,因为每行都有很长的公式要计算,而增加时间范围的重复行可能会增加计算量。如果我决定最多有两个时间范围,4列是否适用于打开时间1、关闭时间1、打开时间2、关闭时间2?