gpt4 book ai didi

ruby-on-rails - 按月份编号查找特定月份的所有记录(例如 1 = 一月)

转载 作者:行者123 更新时间:2023-11-29 13:25:09 26 4
gpt4 key购买 nike

使用 Rails 4.2、Ruby 2.1.7。 PostgreSQL 9.4

当我只有一个整数作为参数时,我想查找特定月份的所有记录。

例如1 = 一月,2 = 二月

现在我有(start_time 是我的 datetime 字段)

def self.by_month(month)
where('extract(month from start_time) = ?', month)
end

生成的 SQL 查询是:

SELECT "jobs".* FROM "jobs" WHERE (extract(month from start_time) = 1)

最佳答案

更好的解决方案可能是使用日期范围。 ActiveRecord 将其转换为 WHERE x BETWEEN y AND z,因为如果您有数年的记录,提取月份可能会不明确。

像这样:

def self.by_month(int)
int = int - 1 # convert month from 1 to 0 based
now = DateTime.now
if int < (now.month + 1) # now.month is 1 based
min = now.beginning_of_year + int.months
else
min = now.last_year.beginning_of_year + int.months
end

where(start_time: [min..(min.end_of_month)])
end

您的确切方法如何结束取决于您希望如何处理可能属于上一年或下一年的月份。

在某些情况下,让您的用户选择带有日期输入的月份可能更有意义,这样您就可以区分。

关于ruby-on-rails - 按月份编号查找特定月份的所有记录(例如 1 = 一月),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35209673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com