对于我目前正在处理的项目,用户需要能够添加特定日期、每周日期(例如每周三中午 12 点)或每月日期(例如每月 1 日晚上 8 点)。 日期是用户搜索的主要内容。最重要的是可以找到第一个即将到来的日期。
想了一会儿,但我不确定该去哪里。这是我想出的:
为捐赠日期添加一定数量的记录,并每天或每周更新这些记录。
这里的问题是,当用户搜索 2020 并且没有添加记录时,我该怎么办,因为距离现在已经很长时间了。或者如果时间改变了怎么办。如何轻松找到正确的记录?
最佳答案
我不认为为每个日期添加多个条目是可行的解决方案,部分原因是您描述的问题。这也可能是一种非常快速地爆出数据库大小的方法,尤其是在有很多用户/日期的情况下。
我的第一个想法是为此放弃时间戳列。这在一定程度上是为了让您不必创建多个记录,同时也让查询变得更加容易。
我会将逻辑单元分成不同的列。像这样,对于您描述的日期:
id | wday | mday | hour | minute |
----------------------------------
1 | 3 | NULL | 12 | 00 |
2 | NULL | 1 | 20 | 00 |
这样,您就可以很容易地找到星期三 (Model.where(:wday => 3)
) 或每个月的第一天 (Model.where) (:mday => 1)
),它还允许您显示任何给定年、月或周等的结果,直到永恒。
关于mysql - Ruby on Rails 和 MySQL 插入和选择每周事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6608664/