Ruby on rails Rails ActiveRecord条件(日期范围介于之间)工作不正常
我正在尝试对所有Ruby on rails Rails ActiveRecord条件(日期范围介于之间)工作不正常,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试对所有事件进行一个简单的查询,这些事件的预定日期\u开始时间在特定日期范围内。我有以下ActiveRecord表达式: now = Date.today - 1 # start date sixWeeks = (now - 42) # exactly 6 weeks ago start = (sixWeeks - 6) # start of valid date 6 weeks ago @events = Event.find(:all, :con
事件进行一个简单的查询,这些事件的预定日期\u开始时间在特定日期范围内。我有以下ActiveRecord表达式:
now = Date.today - 1 # start date
sixWeeks = (now - 42) # exactly 6 weeks ago
start = (sixWeeks - 6) # start of valid date 6 weeks ago
@events = Event.find(:all, :conditions => {:scheduled_date_start => start.to_date..sixWeeks.to_date})
这似乎有效,但我注意到它在最后一天不起作用。例如:如果日期范围在2014-01-28-2014-02-03之间,则结果不包含具有2014-02-03的scheduled\u date\u start
的事件
有人知道为什么吗
以下是运行的SQL查询:
SELECT * FROM `events` WHERE (`events`.`scheduled_date_start` BETWEEN '2014-01-28' AND '2014-02-03') AND (events.deleted_at IS NULL OR events.deleted_at > '2014-03-18 09:08:41')
我想这就是你需要的
@events = Event.find(:all, :conditions => {:scheduled_date_start => start.beginning_of_day..sixWeeks.end_of_day})
我想这就是你需要的
@events = Event.find(:all, :conditions => {:scheduled_date_start => start.beginning_of_day..sixWeeks.end_of_day})
我认为这将有助于你:
@events = Event.where("scheduled_date_start between ? and ? ", start.to_date, sixWeeks.to_date)
我认为这将有助于你:
@events = Event.where("scheduled_date_start between ? and ? ", start.to_date, sixWeeks.to_date)
如果计划日期开始为日期时间类型,则它将包含时间,在这种情况下,例如“2014-02-03 11:01AM”将晚于“纯日期”2014-02-03,该日期将评估为“2014-02-03 00:00AM”。嗯,这看起来可能是问题所在。应该显示的事件的计划开始日期为2014-02-03 19:00:00
。我是否可以强迫它只比较我的日期(没有时间)?我不确定在这种情况下,这两种行为的表现如何,但你可以简单地再加一天。有一些方法可以使用SQL在datetime和date之间进行转换,虽然这些数据库之间可能不兼容,您必须编写相当难看的SQL查询。如果计划的日期开始类型为日期时间,则它将包含时间,在这种情况下,例如“2014-02-03 11:01AM”将晚于“纯日期”2014-02-03,该日期将计算为“2014-02-03 00:00AM”。嗯,看起来像这可能就是问题所在。应该显示的事件的计划开始日期为2014-02-03 19:00:00
。我是否可以强迫它只比较我的日期(没有时间)?我不确定在这种情况下,这两种行为的表现如何,但你可以简单地再加一天。有一些方法可以使用SQL在datetime和date之间进行转换,尽管这些方法在数据库之间可能不兼容,并且您必须编写相当难看的SQL查询。首先,我总是忘记存在这种一天结束的情况,这让我很难在0:00AM创建记录的边缘大小写。这正是我所需要的!Chears:)第一,我总是忘记这一天结束的事情的存在,给我留下了在凌晨0:00创建的记录的边缘案例的丑陋可能性。这正是我所需要的!Chears:)