在mySQL数据库中存储时间范围并与当前时间进行比较

时间:2011-05-19 18:57:54

标签: php javascript mysql codeigniter time

我有一个数据库表,存储商店的营业时间作为VARCHAR的时间范围,如'上午9点至下午5点'和'上午9点至下午3点,下午5点至晚上11点'。我想比较这些开放时间和当前时间,所以如果当前时间是下午2点,我将使用PHP回显一个文本,说明商店现已开放,如果当前时间是晚上11:30,商店将显示关闭。

  1. 如何将当前时间与表格中的营业时间范围进行比较
  2. 我的存储时间范围的方法是否合适?
  3. 我正在使用Codeigniter,所以如果有用的功能也让我知道!

3 个答案:

答案 0 :(得分:3)

您应该使用TIME数据类型使用2列(一个用于开放时间,一个用于关闭时间):http://dev.mysql.com/doc/refman/5.1/en/time.html

通过这样做,您可以使用BETWEENNOW()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。