加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

每周时间表 – 如何将其存储在数据库中?

发布时间:2020-12-12 06:31:57 所属栏目:MsSql教程 来源:网络整理
导读:目前,我正在开发一个项目来管理服务器等数据库上的维护窗口.基本上,我只需要精确到一小时,但允许将它们设置为允许或不允许每天一周中的. 关于如何做到这一点,我有一些想法,但由于我自己工作,我不想在没有反馈意见的情况下做任何事情. 为了形象化,它就像流动的
目前,我正在开发一个项目来管理服务器等数据库上的维护窗口.基本上,我只需要精确到一小时,但允许将它们设置为允许或不允许每天一周中的.

关于如何做到这一点,我有一些想法,但由于我自己工作,我不想在没有反馈意见的情况下做任何事情.

为了形象化,它就像流动的“图形”

| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
    -------------------------------------------
5AM |allow|allow|allow|deny |deny |allow|allow|
    -------------------------------------------
6AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
7AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
8AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
9AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
... etc...

有没有一种标准的方法来做这个或资源,可能会给我一些想法……

>制作可以轻松保存和恢复的格式
>使其可以在数据库中搜索(例如,不必反序列化它来搜索时间)

[更新]

值得一提的是,即使不太可能,也可以设置为“允许,拒绝,允许,拒绝……等等”.跨度不能保证是一整天中唯一的一个.

这也不是唯一的时间表,会有数百台设备各自有自己的时间表,所以它会变得毛茸茸……哈哈?

Rob问每个星期是否需要跟踪 – 事实并非如此.这是一个适用于整年的通用计划(定期维护)

解决方法

我会考虑(1)使用包含开始和结束时间的格式,以及一周中某一天的整数字段.我知道你说过这些块总是一个小时,但是你的代码可以强制执行.此外,如果您的要求在某一天发生变化,那么在步骤(2)中您将要担心的问题比您的DB语句全部写入假设1小时的时间段要少得多.
CREATE TABLE maintWindow (
   maintWindowId  int primary key auto_increment not null,startTime      Time,endTime        Time,dayOfWeek      int,...

对于(2),如果每条记录都有与之关联的开始和结束时间,那么在任何给定时间内检查窗口非常容易:

SELECT maintWindowId
FROM maintWindow
WHERE $time >= TIME(startTime) AND $time <= TIME(endTime) AND DAYOFWEEK($time) = dayOfWeek

(其中$time表示您要检查的日期和时间).

允许或不允许一周中的每一天将由单独的记录处理.恕我直言,这比一周中每天的硬编码更灵活,因为您将使用某种案例陈述或if-else切换以检查您感兴趣的那一天的正确数据库列.

注意:确保您知道数据库在一周中的整数日使用哪种标准,并尝试使您的代码独立于此(始终询问数据库).我们在本周开始时(周日或周一)和起始指数(0或1)有不同标准的乐趣.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读