首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ActiveRecord查找日期在当月内的记录?

问如何使用ActiveRecord查找日期在当月内的记录?
EN

Stack Overflow用户
提问于 2011-08-20 04:20:19
回答 2查看 2.6K关注 0票数 1

我有一个简单的rails应用程序,就像一个事件系统,它有一个start_at字段和一个end_at字段。我希望能够显示其start_at月份在当前月份的事件。我这样定义了一个作用域:

代码语言:javascript
复制
scope :this_months_event, lamda{where("start_at = ?" Time.zone.now.month)}

每当我在控制台窗口中尝试此操作时,都会得到一个空数组。我观察到start_at字段的月份没有被获取,因此它找不到start_at月份,因此它返回空。

有没有人知道这样做的好方法,或者我如何传递start_at月份,以便当我调用Event.this_months_event时,我可以获得当前月份的所有事件,如果可能的话,还可以获取一个获取过去事件的作用域和另一个获取当前事件的作用域。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-20 04:28:40

您的条件表明start_at应该与Time.zone.now.month的值完全相同,在编写本文时,该值为8。您希望将start_at与月初和月末进行比较:

代码语言:javascript
复制
scope :this_months_event, lambda { where("start_at >= ? AND start_at <= ?", 
  Time.zone.now.beginning_of_month, Time.zone.now.end_of_month) }
票数 12
EN

Stack Overflow用户

发布于 2011-08-20 04:28:45

我假设start_at和end_at是datetimes?如果是这样的话,你需要做一些稍微复杂一点的事情:

代码语言:javascript
复制
scope :this_months_event, lambda { where("EXTRACT(MONTH FROM start_at)) = ?", Time.zone.now.month) }

请参阅http://www.postgresql.org/docs/9.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7126971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档