Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails ActiveRecord条件(日期范围介于之间)工作不正常_Ruby On Rails_Ruby - Fatal编程技术网

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