我的网络应用程序中有一个后台工作程序,必须在指定日期内获取并处理所有记录。
例如,如果我指定Nov 30 2015
,则应该将记录从Nov 30 2015 00:00:00
提取到Nov 30 2015 23:59:59
。
以前我使用的是DateTime.now
,它似乎运行正常,但今天我在rails控制台中注意到ActiveRecord生成错误的SQL(来自我的应用程序逻辑'观点)日期范围:from {{ 1}}到Nov 29 2015 22:00:00
。
我担心Nov 30 2015 21:59:59
可能会获取错误的记录或无法获取所需的记录。
DateTime.now
似乎生成了正确的日期范围(从00:00 AM到23:59 PM)。我应该使用它而不是DateTime.current
吗?
DateTime.now :
DateTime.now
DateTime.current :
date_to_check = DateTime.now
# Mon, 30 Nov 2015 12:33:36 +0200
DailyDiagramsLog.where(
day: date_to_check.beginning_of_day..date_to_check.end_of_day)
# SELECT "daily_diagrams_logs".* FROM "daily_diagrams_logs"
# WHERE ("daily_diagrams_logs"."day"
# BETWEEN '2015-11-29 22:00:00.000000' AND '2015-11-30 21:59:59.000000')
答案 0 :(得分:1)
您可以使用Date.today获取特定日期的记录,如: -
date = Date.today
DailyDiagramsLog.where(:day => (date.beginning_of_day..date.end_of_day))
or
time = Time.now
DailyDiagramsLog.where(:day => time.beginning_of_day..time.end_of_day)