数据库如何储存“时间段”才比较合理?

发布于 2022-09-07 15:29:46 字数 255 浏览 22 评论 0

在开发中,有一些场景我们需要将一个时间段的信息存储到数据库中,比如说:一个事件有开始时间和结束时间,我们可以在数据库中用类似 startDate 和 endDate 这样的两个字段来储存。但是如果这个时间段是周期性的或者说是间断性的。

比如说:

储存一个课程的上课时间,这个课程是每周一、每周三、每周五上课

这样的话,数据库的表结构应该如何设计才比较合理呢?

创建7个布尔值类型的字段表示周一到周日?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

追风人 2022-09-14 15:29:46

因为我只看到一这么一个需求,我觉得你可以使用二进制的办法进行计算。

比如一三五上课,那么存储的二进制的数据为10101000;

然后每次查询星期三是否有课:

select * from table where date & 1 << 2;

上面的SQL我没执行过。仅仅是改写。

参考:

clipboard.png

挽容 2022-09-14 15:29:46

使用两张表去设计会有更好的扩展性。
1.课程表,记录课程的相关介绍
2.排课表,记录上课开始时间,结束时间等

这样的时间方便以后新增的需求,比如说统计功能,又或者以后会新增签到功能。

所以我的意思是…使用一张表专门去记录时间段,有一个一对多的关系。

千寻… 2022-09-14 15:29:46

都是按需求来的呀
就像你说的,如果只有一段时间,就可以开始时间+结束时间,也可以开始时间+持续时长

      如果是周期性的多段时间,就可以按周期设置天

那如果要设计一个兼容各种模式的,那可能就会复杂一些
可读性、空间、速度都是此消彼长的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文