gpt4 book ai didi

mysql - Rails 5在sql表中找不到日期字段

转载 作者:行者123 更新时间:2023-11-29 10:54:28 24 4
gpt4 key购买 nike

这个rails sql查询:

Flight.where(arrival_date_time: "2017-04-02 23:29:43".to_datetime)

即使我的数据库中有这个也不起作用:

#<Flight id: 1, departed_from_id: 1, arriving_to_id: 3, departure_date_time: "2017-04-02 16:29:43", arrival_date_time: "2017-04-02 23:29:43", created_at: "2017-04-02 13:29:43", updated_at: "2017-04-02 13:29:43">

返回结果如下:

Flight Load (0.2ms)  SELECT "flights".* FROM "flights" WHERE "flights"."arrival_date_time" = ?  [["arrival_date_time", 2017-04-02 23:29:43 UTC]]
=> #<ActiveRecord::Relation []>

我也尝试过

Flight.find_by(arrival_date_time: "2017-04-02 23:29:43".to_datetime)

Flight.where("arrival_date_time = ?  ", "2017-04-02 23:29:43".to_datetime)

所有 3 个查询都返回 nil。

PS:arrival_date_time属于ActiveSupport::TimeWithZone

最佳答案

我认为您遇到的问题是由于缺乏精确性。尝试以下搜索:

search_time = "2017-04-02 23:29:43".to_datetime
result_1 = Flight.where("arrival_date_time between ? and ?", search_time - 1.second, search_time + 1.second)
result_2 = Flight.where("arrival_date_time between ? and ?", search_time - 1.second, search_time)
result_3 = Flight.where("arrival_date_time between ? and ?", search_time, search_time + 1.second)

对我来说,我得到了 result_1result_3 的预期结果,但没有得到 result_2。这意味着某个地方存在舍入误差,但只要您的搜索可以容忍正负一秒的精度,您就可以按照我的 result_1 行重写您的查询 - 或者更好的是,转换它到一个范围。

关于mysql - Rails 5在sql表中找不到日期字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com