私はrails apiとiOSクライアントを使用しているプロジェクトで作業していますが、updated_atフィールドを参照として使用して、最後にクライアントから引き出します。ActiveRecord:where句を使用するとミリ秒が考慮されない
updated_atの日時は
Model.updated_at.to_f
する "1368977381.063427" のようなものを返すことを意味し、ミリ秒単位の精度を持っています。 これは「2013-05-19T15:29:41.063427000Z」という形式でクライアントに送信されます。
問題は、その日時をクライアントから取得して構文解析してクエリすると、ミリ秒が失われることです。私は何を取得してはならないとき、ミリ秒は切り捨てられますので
last_update = DateTime.strptime("2013-05-19T15:29:41.063427000Z", "%Y-%m-%dT%H:%M:%S.%N%z")
Model.where("updated_at > ?", last_update)
が結果
last_update = DateTime.strptime("2013-05-19T15:29:41Z", "%Y-%m-%dT%H:%M:%S%z")
Model.where("updated_at > ?", last_update)
をやってと同じくらい良いですが、私は常に、少なくとも1つの結果を取得します。
私はどのようにそれらを考慮に入れることができますか?
これを読んで「もちろん!」と思った。 :) – Nycen
私の問題は、データベースに保存されているタイムスタンプの精度が小数点以下5桁までであったのに対して、クライアントはタイムスタンプを小数点以下3桁まで格納していました...より大きいクエリを実行すると、小数点以下2桁が余分にあるためです。 – JBlake
Railsでミリ秒をサポートするネイティブな方法がないのには驚いています。 : -/ –