2

今年作成されたレコードを取得しようとすると、この素晴らしい質問に出くわしました . 2 番目の回答は、次のように言って、今日作成されたモデルからすべてのレコードを取得することを示しています。

Model.where("created_at >= ?", Time.now.beginning_of_day)

ですから、当然、 で同じことを試してみましたが、Time.now.beginning_of_yearうまくいきました。

しかし、興味深いのは、出力されたクエリ (コンソールで試した) が

SELECT COUNT(*) FROM `invoices` WHERE (created_at >= '2012-12-31 23:00:00')

2012-12-31 23:00:00 に 2013 年がすでに始まっていたことを知らなかったのですか? どのようだ?

4

1 に答える 1

3

まだ設定していない場合は、config/application.rbファイルにタイムゾーンを設定する必要があります。で始まる行を探しconfig.time_zoneます。(どの値を指定すればよいかわからない場合は、実行rake time:zones:allして、使用可能なすべてのタイムゾーンのリストを取得できます。)

タイムゾーンを設定したらTime.zone.now、 ではなく を使用する必要がありますTime.now。これにより、時間をタイムゾーンに適切に「スコープ」します。

の詳細については、APIを確認してくださいTimeWithZone

于 2013-01-05T01:27:55.567 に答える