mysql - 基于开始日期和频率的重复检查的数据库结构
问题描述
我有一个问题,我需要设计一个记录系统来存储建筑检查。
需要按指定的频率进行检查,比如根据开始日期每月进行一次。
我想检查需要在inspections
带有id
,startDate
和的表中记录frequency
,然后每次执行检查时,都会在带有,和其他数据的inspection_record
表中放入一个条目。id
inspectionDate
如果只需要在最后一次检查之后的“X 时间范围”就可以了,但检查可能不会在需要的当天进行,可能会在多次检查之前或之后进行”。
startDate
从based生成日期列表很容易frequency
,但是我如何确保inspection_record
已经完成。因为我需要获得所有过期或一个月内到期的检查清单。
我能想到的唯一方法是取startDate
今天的日期和频率,找出频率适合的次数,然后将其向下舍入到最接近的 int 并向上取整以在检查前后得到最接近的值,然后用它来确定“检查括号”并检查是否在这些括号中进行了实际检查,这在大范围内看起来非常混乱和缓慢。
有任何想法吗?甚至是我可以用来搜索这个的术语?
实现某种类似 cron 的系统会更容易吗?但是,我如何确定检查实际上是在正确的时间完成的?刚才说本月1号检查,14号才做完,需要看本月和下个月的检查还是1号到期。
解决方案
Have another column, next_scheduled_date
. When an inspection is performed, update that column to CURDATE() + INTERVAL 1 MONTH
.
With that column, you can discover
WHERE next_scheduled_date < CURDATE() -- task that are overdue
WHERE next_scheduled_date = CURDATE() -- due today
WHERE next_scheduled_date < CURDATE() + INTERVAL 7 DAY -- this week's tasks
etc.
推荐阅读
- angular - 谷歌图表:在柱形图中显示轴的末端或轴的顶部
- node.js - How to click an element with Selenium webdriver javascript?
- java - 跟踪位置以动画片段之间的过渡
- python - 如何制作文本文件并将数据(str和int)放入python?
- android - 如何更改时间选择器的时钟图像
- c# - 如何在不使用 Base64 的情况下将数字加密/解密为字符串
- asp.net - 无需下载即可在服务器上调整图像大小
- excel - Search for a string in a pdf file then copy the info into word/excel/txt file?
- python - PDB - Set or change Variable in interactive mode
- java - 遍历每个项目并检查数组 Java 中项目的值