我使用Ruby on Rails,我有一个Users表,其生日字段是日期类型。
我想要做的是能够在特定用户生日时显示提醒。我意识到我遇到的问题是,在我的所有测试案例中,我今天都会在某人生日那天看看它是否有效,但是如果我今天生日某人生日,但是10年前,我的警报系统因为岁月而停止工作不匹配。
所以基本上,我想让用户过生日,但只有日期和月份,并检查它是否与今天和月份匹配。我应该使用某种原始查询,还是应该考虑别的什么?
答案 0 :(得分:1)
您可以使用:
select t.*
from t
where month(t.dob) = month(curdate()) and day(t.dob) = day(curdate());
注意:大多数数据库都支持month()
和day()
。所有都具有此功能,但确切的功能可能取决于数据库。
答案 1 :(得分:0)
您可以参考此https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html来获取日期时间的日期和月份
答案 2 :(得分:0)
通过将数据库的月份和日期提取方法传递到User.where
,可以以Rails方式执行此操作。
例如,为了让用户在2月14日出生在SQLite3中:
User.where("strftime('%m %d', birthday) = ?", "02 14")
MySQL中的:
User.where("month(birthday) = ? AND day(birthday) = ?", "02", "14")`
在Postgres中:
User.where("date_part('month', birthday) = ? AND date_part('day', birthday) = ?", "02", "14")
上述代码段假设users
表格中的列名为birthday
。