使用哪种 DateTime 方法来获取特定日期的记录?

Which DateTime method to use to fetch records for particular day?

我的 Web 应用程序中有一个后台工作者,它必须获取和处理给定日期的所有记录。

例如,如果我指定 Nov 30 2015,它应该从 Nov 30 2015 00:00:00 获取记录到 Nov 30 2015 23:59:59

之前我使用的是 DateTime.now 并且它似乎工作正常,但今天我在 rails 控制台中注意到 ActiveRecord 生成 SQL 错误(从我的应用程序逻辑的角度来看)查看)日期范围:从 Nov 29 2015 22:00:00Nov 30 2015 21:59:59

恐怕 DateTime.now 可能会获取错误的记录或不会获取所需的记录。

另一方面,

DateTime.current 似乎生成了正确的日期范围(从 00:00AM 到 23:59PM)。我应该使用它而不是 DateTime.now 吗?

DateTime.now:

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

DateTime.current:

date_to_check = DateTime.current
# Mon, 30 Nov 2015 10:35:27 +0000

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-30 00:00:00.000000' AND '2015-11-30 23:59:59.000000')

您可以使用 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)