【问题标题】:How to efficiently store schedular dates?如何有效地存储预定日期?
【发布时间】:2012-12-05 13:18:50
【问题描述】:

例如我有:

  1. 开始日期(1 列)
  2. 结束日期(1 列)
  3. 工作日:周一、周二、周三、周四、周五、周六、周日(1 列)

如何定义星期,以便将上述数据存储在数据库中的 3 字段中?

【问题讨论】:

  • “周”是什么意思?您的意思是您可以将调度程序设置为每天运行一次吗?
  • 可以选择一周,周一和周二或更多...但我希望这个(周一和周二)在数据库中存储 1 行和 1 列
  • @user1865039 你能解释一下调度程序是如何工作的吗?你能举个例子吗..?您打算如何使用这些数据?您可以将所有这些信息存储在单个表格单元格/字段中,但随后您将不得不花时间拆分数据。
  • 一周中的每一天使用单独的列..
  • 我计划将列 StartDate、EndDate 和 Week(周一、周二、周三、周四、周五、周六、周日)列在一行中。

标签: database algorithm scheduler


【解决方案1】:

从处理角度来看,不建议将这 3 个字段存储在单个单元格中。 在写入和读取表时,您将不得不经历不必要的开销来编码和解码数据,并且还需要执行额外的数据类型转换!

您可以尝试类似 : ,, 其中:周一、周二和周四为 124。但正如上面所讨论的,这不是正确的方法..

理想情况下,每个项目都有 3 列,并以多种格式存储工作日:

  1. <weekday_list_to_run_the _scheduled_tasks>:我们将Monday, Tuesday and Thursday 编码为124。需要最多的处理。
  2. 好旧的 AND-ing:
    假设我们将<weekday_list_to_run_the _scheduled_tasks> = Monday-X-X-Thursday-Fri-X-Sunday 存储为1001101。 然后通过 7 次 AND-ing 操作,我们找到了 计划应该运行。

例如。

IF (<weekday_list_to_run_the _scheduled_tasks> AND 1000000) == 1 THEN 
     //Monday is set. 
END IF

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2018-08-07
    • 2010-11-16
    • 2012-02-01
    相关资源
    最近更新 更多