sql – 如何在Rails中创建“即将到来的生日”模块?
发布时间:2020-05-24 19:01:08 所属栏目:MsSql 来源:互联网
导读:我有一个表“users”,其列为“date_of_birth”(日期,月份,年份为DATE格式). 在前端,我需要列出5个即将到来的生日. 花了很长时间试图弄清楚这个逻辑……还浏览了谷歌里所有可能没有运气的文章. 有任何建议如何在RoR中做到这一点? 谢谢! 有几个答案建议计算/
|
我有一个表“users”,其列为“date_of_birth”(日期,月份,年份为DATE格式).
花了很长时间试图弄清楚这个逻辑……还浏览了谷歌里所有可能没有运气的文章. 有任何建议如何在RoR中做到这一点? 谢谢! 解决方法有几个答案建议计算/存储一年中的日期并对其进行分类,但是当你接近年底并且需要在明年年初考虑有生日的人时,仅此一项并不会有多大好处.我会找一个解决方案来计算每个人下一个生日的完整日期(年,月,日),然后对此进行排序.您可以在Ruby代码中执行此操作,也可以使用数据库中的存储过程执行此操作.后者会更快,但会使您的应用程序更难以在以后迁移到不同的数据库平台. 仅每天更新一次即将到来的生日列表是合理的,这意味着您可以使用某种形式的缓存.因此,所需的查询/代码的速度不是问题,只要您缓存结果,这样的事情应该可以正常工作: class User
def next_birthday
year = Date.today.year
mmdd = date_of_birth.strftime('%m%d')
year += 1 if mmdd < Date.today.strftime('%m%d')
mmdd = '0301' if mmdd == '0229' && !Date.parse("#{year}0101").leap?
return Date.parse("#{year}#{mmdd}")
end
end
users = User.find(:all,:select => 'id,date_of_birth').sort_by(&:next_birthday).first(5)
编辑:修复了与闰年一起正常工作. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 理解SQL SERVER中的逻辑读,预读和物理读用法示例
- SQL:一个查询中有两个select语句
- SQL Server 2008 R2. “AUTO_INCREMENT”附近的语法不正确
- sql-server-2005 – 在SQL Server 2005中分析非常大的结果集
- sql – ALTER语句:为什么VARCHAR2(50 BYTE)而不是VARCHAR2
- 数据库 – 嵌套间隔是嵌套集(修改的预订遍历)RDBMS性能降低
- sql-server – 我注意到人们提到使用VPS的MSSQL Server并不
- Redis教程(七):Key操作命令详解
- sql-server – SQL Server:以编程方式执行维护计划
- SQL Native Client 10性能不佳(由于服务器端游标)
