mysql - Ruby on Rails 和 MySQL 插入和选择每周事件

标签 mysql ruby-on-rails ruby date

对于我目前正在处理的项目,用户需要能够添加特定日期、每周日期(例如每周三中午 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/

相关文章:

php - 插入Mysql表中的特定列

mysql - 如何在mysql中比较两个表的计数和百分比

php - 使用 AJAX 将 js 变量传递给 PHP

ruby-on-rails - IronRuby on Rails 入门

ruby-on-rails - 在 ruby​​ worker 中使用 Carrierwave 保存图像

javascript - js.erb 文件在 Controller 中的 respond_to 之后不会加载

c# - 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败

mysql - 使用 IF 和 INNER JOIN 的 SQL 查询解释

ruby - 使用 Ruby 作为脚本语言,使用 4gb RAM 的计算机对 30gb 的字符串进行排序的最佳方法是什么?

ruby - 在 Ubuntu 14.04 上使用 RVM 安装 Ruby 2.2.2 时出错