- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个表“users”,其中有一列“date_of_birth”(DATE 格式,包含日、月、年)。在前端,我需要列出 5 个即将到来的生日。
花了很长时间试图找出逻辑..也浏览了谷歌中所有可能的文章,但没有运气..
有什么关于如何在 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 - 如何在 Rails 中创建 "Upcoming birthdays"模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056000/
我正在使用此处提供的多合一事件日历:http://wordpress.org/extend/plugins/all-in-one-event-calendar/ 我正在尝试使用 WP_Query()
Stripe 文档对此含糊不清: https://stripe.com/docs/billing/webhooks A few days prior to renewal, your site rec
Stripe 文档对此含糊不清: https://stripe.com/docs/billing/webhooks A few days prior to renewal, your site rec
我想获得最近的星期一的日期(即不是过去的)。 因此,如果今天是星期二(2009 年 12 月 1 日),我想获取星期一(2009 年 12 月 7 日)的日期。 我如何用 Zend_Date 做到这一
我有一个表“users”,其中有一列“date_of_birth”(DATE 格式,包含日、月、年)。在前端,我需要列出 5 个即将到来的生日。 花了很长时间试图找出逻辑..也浏览了谷歌中所有可能的文
我有一个数据框: col1 col2 a 0 b 1 c 1 d 0 c 1 d 0 在 'col2' 上,我只想保留顶部的第一个 1 并
我们目前在移动应用程序中使用 PhoneGap,我知道他们有 device.udid (http://docs.phonegap.com/en/1.0.0/phonegap_device_device
我有一些旧的 Azure Powershell 脚本,我正在将它们拿出来再次使用。它们似乎按照我内存中的方式工作,除了我收到这些警告: $VirtualMachine = Add-AzureRmVMN
我是一名优秀的程序员,十分优秀!