Ruby on rails 有没有办法在查询中修改.where()查询的数据库端?

Ruby on rails 有没有办法在查询中修改.where()查询的数据库端?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,基本上,我有一个DateTime存储在格式“2020-01-01 00:05:00 UTC”中,但我只需要将它的无时间日期(第一个)部分与我的参数[:date](格式为“2020-01-01”)进行比较 有没有一种方法可以做到: @events = Event.where(date.to_s.match(/\d{4}-\d{2}-\d{2}/): params[:date]) 查询的数据库端在运行时被操纵为实际存储数据的一部分 如果不是的话,你会怎么做呢?对于你上面的问题,你可以这样做 @ev

基本上,我有一个DateTime存储在格式“2020-01-01 00:05:00 UTC”中,但我只需要将它的无时间日期(第一个)部分与我的参数[:date](格式为“2020-01-01”)进行比较

有没有一种方法可以做到:

@events = Event.where(date.to_s.match(/\d{4}-\d{2}-\d{2}/): params[:date])
查询的数据库端在运行时被操纵为实际存储数据的一部分


如果不是的话,你会怎么做呢?

对于你上面的问题,你可以这样做

@events = Event.where("DATE(date) = ?", params[:date])
@events = Event.where("DATE(date) = ?", params[:date].to_date)
上面的这个命令将比较datetime字段中的日期部分,函数date(..)是SQL命令的一部分

如果params[:date]是string,则可以用这种方式执行

@events = Event.where("DATE(date) = ?", params[:date])
@events = Event.where("DATE(date) = ?", params[:date].to_date)

对于你上面的问题,你可以这样做

@events = Event.where("DATE(date) = ?", params[:date])
@events = Event.where("DATE(date) = ?", params[:date].to_date)
上面的这个命令将比较datetime字段中的日期部分,函数date(..)是SQL命令的一部分

如果params[:date]是string,则可以用这种方式执行

@events = Event.where("DATE(date) = ?", params[:date])
@events = Event.where("DATE(date) = ?", params[:date].to_date)