拼音格式日期时间参数在查询中



我想做这样的查询:

bookings = Booking.where(user_id: @current_user.id, start_at: date.to_datetime)

在这种情况下,问题是,我只是在与时间戳00:00:00匹配的预订中获得结果,这是非常合乎逻辑的。

是否可以格式化查询中的 start_at 参数,以便我只比较两个日期而不是日期时间?

尝试通过 SQL 将日期时间字段转换为日期:

bookings = Booking.where(user_id: @current_user.id)
                  .where("DATE(start_at) = ?", date)

DATE() 提取日期时间表达式的日期部分。

注意:它在 PotsgreSQL 中不起作用

或:

bookings = Booking.where(user_id: @current_user.id,
                         created_at: date.beginning_of_day..date.end_of_day)

这个怎么样?

bookings = Booking.where(user_id: @current_user.id, start_at: start_date..end_date)

bookings = Booking.where(user_id: @current_user.id)
                  .where('start_at > ? AND start_at < ?', start_date, end_date)

其中start_date和end_date是您要检查的两个日期。

相关内容

  • 没有找到相关文章

最新更新