【发布时间】:2019-04-07 11:07:16
【问题描述】:
很简单,我有一个疑问:
@current_user.items.where('updated_at > ? AND updated_at < ?', last_sync_time_from_client, current_time)
我的问题是,我认为在数据库中比较的时间和last_sync_time_from_client 是在浮动基础上进行比较的。这总是导致updated_at > last_sync_time_from_client 为真,即使时间与秒相同。
即
(db item)updated_at.to_f # 1541246811.022979
last_sync_time.to_f # 1541246811.0
这意味着直到秒都相同的时间将返回异常值。有没有办法解决这个问题,或者我应该简单地在 last_sync_time_from_client 中添加一秒钟以说明 Rails 在这里很奇怪?
【问题讨论】:
-
这里没有什么奇怪的。秒不是最小的时间单位。如果您的逻辑要求,您可以truncate the date to the second,但我不明白您为什么应该这样做。您不想返回在
last_sync_time_from_client之后 1 毫秒更新的项目吗?您是否还期望updated_at会在未来出现?如果不是,那么确保它小于 current_time 是没有必要的
标签: ruby-on-rails postgresql parsing time comparison