Rails + ActiveRecord:比较日期



>我有一个文档,比如说,在2017-10-03 15:02:47上生成。

然后我有这个 Rails/SQL 查询(不管我是通过 Rails 运行还是直接通过 SQL 控制台运行它,结果是一样的):

SELECT * FROM table where needed_column <= '2017-10-03';

此查询不会向我返回在2017-10-03 15:02:47上生成的文档。但是,如果我确实运行此查询:

SELECT * FROM table where needed_column <= '2017-10-03 23:59:59';

然后我得到所需的文档(在2017-10-03 15:02:47上生成)。

为了解决这个问题,我可以手动将时间添加到查询(23:59:59),但这不是一个非常优雅的解决方案。

我正在使用Rails 5,AR,PostgreSQL - 有没有比手动将时间戳添加到查询中更好的方法来解决这个问题?

谢谢

您的needed_column可能正在保存时间戳(日期和时间)。正如您已经弄清楚的那样,您需要将其与另一个时间戳进行比较或使用::dateneeded_column

Model.where("needed_column::date <= '2017-10-03'")

这将生成:

SELECT table.* FROM table WHERE (needed_column::date <= '2017-10-03')

在 Rails 中试试这个:-

Model.where(needed_column: [Time.now.at_beginning_of_day, Time.now.end_of_day])

或作为sql查询:-

SELECT * FROM table_name WHERE needed_column BETWEEN '2017-10-09 00:00:00 UTC' AND '2017-10-09 23:59:59 UTC'

最新更新