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

Php 在mySQL数据库中存储时间范围并与当前时间进行比较,php,javascript,mysql,codeigniter,time,Php,Javascript,Mysql,Codeigniter,Time,我有一个数据库表,将商店的营业时间存储为VARCHAR格式的时间范围,如“9am-5pm”和“9am-3pm,5pm-11pm”。我想将这些开放时间与当前时间进行比较,因此,如果当前时间是下午2点,我将使用PHP来回显一个文本,说明商店现在已经开放,如果当前时间是晚上11:30,商店将显示为关闭 如何将当前时间与表中的开放时间范围进行比较 我存储时间范围的方法是否合适 我正在使用Codeigniter,所以如果有有用的函数,也请告诉我 您应该使用两列(一列用于打开时间,一列用于关闭时间),两列都

我有一个数据库表,将商店的营业时间存储为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?