Rails的ActiveRecord的+:比较日期
问题描述:
我有一个已经产生,也就是说,在2017-10-03 15:02:47
文档。Rails的ActiveRecord的+:比较日期
然后我就这个轨道/ SQL查询(如果我运行它通过轨道或直接通过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
大概节约时间戳(日期和时间)。当你已经理解了它,你需要将它与其他时间戳比较或使用::date
Model.where("needed_column::date <= '2017-10-03'")
投needed_column
这将产生:
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'
尝试使用“end_of_day”,例如:Time.now.end_of_day给周一09年10月23:59:59 UTC 2017年 –
我认为这是因为2017年10月3日15时02分47秒被认为是不仅仅是2017-更大10-03。你可以使用SELECT * FROM表where needed_column
尝试此查询SELECT * FROM表,其中needed_column