Mysql 带有日期的查询不返回边界日期数据的Rails

Mysql 带有日期的查询不返回边界日期数据的Rails,mysql,ruby-on-rails,ruby-on-rails-4,activerecord,Mysql,Ruby On Rails,Ruby On Rails 4,Activerecord,我正在尝试使用rails从mysql数据库检索数据。它工作正常,但不会返回接近边界日期的数据。比如说 if params[:from] and params[:to] fr = nil; fr = DateTime.parse(params[:from]) unless params[:from].empty? to = nil to = DateTime.parse(params[:to]) unless params[:to].empty? if !fr.nil

我正在尝试使用rails从mysql数据库检索数据。它工作正常,但不会返回接近边界日期的数据。比如说

    if params[:from] and params[:to]
  fr = nil;
  fr = DateTime.parse(params[:from]) unless params[:from].empty?
  to = nil
  to = DateTime.parse(params[:to]) unless params[:to].empty?

  if !fr.nil? and !to.nil?
    puts "------------------"
    puts fr
    puts to
    @m = @m.where(start: fr..to)
  end
end
@m.size
日志信息

App 30303 stdout: ------------------
App 30303 stdout: 
App 30303 stdout: 2015-04-12T16:26:16+02:00
App 30303 stdout: 
App 30303 stdout: 2015-04-13T16:26:16+02:00
App 30303 stdout: 
App 30303 stdout: 0
我确信在这之前的一个小时和一个小时都有数据

 268129 | 2015-04-13 15:21:53 | 2015-04-13 15:21:53 |
其中第一列是id,第二列是开始日期

所以,正如我在日志中看到的那个样,确定日期是正确的,并且特定的用户也有数据。我试图从过去24小时中提取数据


有什么建议吗?

好的,问题是代码使用了时区,而数据库似乎保存了一个没有时区信息的datetime对象,所以我们需要告诉rails使用这个时间,并假设它是正常的utc时间,希望这能行得通

if params[:from] && params[:to]
  Time.use_zone('UTC') do
    fr = Time.parse params[:from]
    to = Time.parse params[:to]
  end
  @m = @m.where(start: fr..to)
  end
end
@m.size

请将
put@m.to_sql
的输出粘贴在
@m.size
选择
ms
*FROM
ms
的前面,其中
ms
用户id
=127和(
ms
在'2015-04-12 14:44:07'和'2015-04-13 14:44:07'之间启动
)ORDER BY
ms
…`啊哈,我现在看到问题了,现在已经是2小时前了,但为什么会这样……因为我提供了正确的DateTime区域内容,不确定这是否可行,但尝试用
Time.zone.parse替换
DateTime.parse
不,它不起作用。。。;(谢谢,但现在我也解决了时区问题,这里是sql,但没有工作从
ms
中选择
ms
*WHERE
ms
user\u id
=127和(
ms
start
在'Sun,Apr 2015 17:08:32'和'Mon,Apr 2015 17:08:32'之间)按
ms
创建的订单