gpt4 book ai didi

sql - 几乎相同值的日期比较

转载 作者:行者123 更新时间:2023-11-29 14:31:22 25 4
gpt4 key购买 nike

我有一个包含两列的表格created_atvalid_from。在我的数据库中的大多数情况下,它们应该是相同的。

当我想得到两列都相等的所有记录时,我得到零条记录。

Order.where('created_at == valid_from').length

Order Load (3609.4ms) SELECT "orders".* FROM "orders" WHERE (created_at <> valid_from)
=> 0

所以我采取了另一种方法:

ord = Order.where("created_at != valid_from").first
Order Load (741.0ms) SELECT "orders".* FROM "orders" WHERE (created_at != valid_from) ORDER BY "orders"."id" ASC LIMIT $1 [["LIMIT", 1]]
ord.created_at == ord.valid_from
=> false
ord.created_at
=> Wed, 04 Jul 2018 11:34:44 CEST +02:00
ord.valid_from
=> Wed, 04 Jul 2018 11:34:44 CEST +02:00
ord.valid_from.to_i
=> 1530696884
ord.created_at.to_i
=> 1530696884
ord.valid_from.to_i == ord.created_at.to_i
=> true
ord.valid_from == ord.created_at
=> false
ord.created_at.to_f
=> 1530696884.26669
ord.valid_from.to_f
=> 1530696884.2668211

所以两个日期之间存在微小的差异。从 Rails 的角度来看,它是一样的。对于数据库 - 不是。

处理具有微小差异的日期的最佳方法是什么?

最佳答案

看看Postgres的这个奇葩功能date_trunc() . :)

所以基本上比较会是这样

WHERE (date_trunc('second', created_at) != date_trunc('second', valid_from))

在您的情况下,我认为四舍五入到“第二”就可以了。

希望对您有所帮助!

关于sql - 几乎相同值的日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51303240/

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