使用哪种 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:00
到 Nov 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)
我的 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:00
到 Nov 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)