mysql时间段的存储策略

现有场景:存储一个店铺/超市的营业时间段(可以有多个),例如:9:00-13:00 , 18:00-22:00 等等时间段,时间段之间互不相交.在DB层面如何处理这种设计呢?用JSON?或者另外一张表单独处理时间吗?请大佬们赐教

阅读 9.9k
6 个回答

我理解你的需求是:
一个店铺A营业时间是9:00开始,13:00结束,18:00点开始,22:00结束。
那么数据库设计应该是:
一个店铺的营业时间段一般不会超过三个,所以可以有三个字段来存时间段

店铺table
id, name, duration_id1, duration_id2(可空), duration_id3(可空)

然后时间段的表设计:

时间段table
id, start_time, end_time

店铺表的duration_id是时间段表的外键。
时间段表相当于是reference data,而店铺表的数据是会更改的。

如果 美团要查询当前时间 营业的餐厅,json ·····你怎么处理
门店营业时间表
门店ID 开始时间 结束时间 (1个门店可以有多条记录)
我感觉新建表的好

不知道实际场景,描述很模糊,你所说的需求只有存储营业时间的需求,当然新建个表来存。开始时间,结束时间分开存,方便查询,而且你的需求应该是要存日期的。

店铺/超市 一对多 时间,
按你说的建表和json都可以;
建表处理起来方便,就是得多写一条sql,
json方式按时间查询的时候不方便。
我喜欢建一张表

建议新建一个表,除了上面说的查询当前正在营业的餐厅需求,还有就是统一修改所有营业时间,春秋2季、工作日和周末不同营业时间,新建表更好操作一些

目前我的做法是,DB里对时间段存了json,json以一个包含Integer startTime和Integer endTime的对象List集合,然后再取出来转成list。至于时间存的是分钟,比如:早上6:30 就是 6 * 60 + 30 = 390 也校验了不重叠的保存失败。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏