web-dev-qa-db-ja.com

Ruby mysqlの比較に適した日時

Railsは、MySqlに正しくフォーマットされた日付時刻を自動的に挿入することで優れています。

ただし、検証を行うために、保存されたmysqlの日時値(つまり、2008-07-02 18:00:00)が「現在」よりも大きいか小さいかを確認する必要があります。 DateTime.nowまたはTime.nowしかし、どうすればmysqlが好きな形式に変換できますか?

ありがとう

38
user94154

to_s(:db)を使用して、データベースに適した形式に変換できます。

_Time.now.to_s(:db)
_

ただし、Rails)でタイムゾーンを指定している場合は注意してください。時刻はデータベースのUTCに格納されるため、適切に比較するために指定する必要があります。

_Time.now.utc.to_s(:db)
_

Rubyで現在の時刻を生成する代わりに、MySQLでNOW()関数を使用することもできます。

97
ryanb

する必要はありません。 Railsあなたのために仕事をさせましょう:

モデルがWidgetの場合、これは前日に作成されたすべてのウィジェットを検索します。

Thing.find(:all, :condition => ["created_at > ?", Time.now - 1.day])

Railsは自動的にタイムスタンプを正しい形式に変換します。

5
levinalex