ruby 导轨+活动记录:比较日期

rqqzpn5f  于 2023-01-04  发布在  Ruby
关注(0)|答案(2)|浏览(165)

我有一个文档,它是在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 --有没有比手动向查询添加时间戳更好的方法来解决这个问题?
谢谢

6l7fqoea

6l7fqoea1#

您的needed_column可能保存了时间戳(日期和时间),因为您已经知道了,您需要将其与另一个时间戳进行比较,或者使用::date强制转换needed_column

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

这将产生:

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

iqih9akk2#

在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'

相关问题