Panagiotis Panagi
Panagiotis Panagi

Reputation: 10077

Querying with > (greater than) returns records >= (greater than or equal to)

Can someone explain why the following query:

> modified_after = DateTime.parse "2012-12-06T17:40:36+00:00"
> Contact.unscoped.where("updated_at > :time OR deleted_at > :time", {:time => modified_after})

also returns records with updated_at equal to modified_after:

Contact Load (0.4ms)  SELECT "contacts".* FROM "contacts" WHERE (updated_at > '2012-12-06 17:40:36' OR deleted_at > '2012-12-06 17:40:36') => [
#<Contact id: 28, first_name: "John", last_name: "A", deleted_at: nil, created_at: "2012-12-06 17:40:36", updated_at: "2012-12-06 17:40:36", email: nil, notes: nil>, 
#<Contact id: 29, first_name: "Mark", last_name: "B", deleted_at: nil, created_at: "2012-12-06 17:40:36", updated_at: "2012-12-06 17:40:36", email: nil, notes: nil>,
 #<Contact id: 30, first_name: "Michael", last_name: "C", deleted_at: nil, created_at: "2012-12-06 17:40:36", updated_at: "2012-12-06 17:40:36", email: nil, notes: nil>
]

Upvotes: 0

Views: 196

Answers (1)

Sean Hill
Sean Hill

Reputation: 15056

It may be that those times are milliseconds greater than the query time. What version of Rails are you running? Check out this bug and see if it is related: https://github.com/rails/rails/issues/7385

Upvotes: 2

Related Questions