簡體   English   中英

在Ruby on Rails中計算TIMESTAMP值之間的差異的最佳方法是什么

[英]What is the best way to calculate difference between TIMESTAMP values in Ruby on Rails

在Ruby on Rails 4.1.4中實現以下行為的最佳方法是什么?

我在DB中有一個表,其中的一列包含TIMESTAMP值。 如果此列中的TIMESTAMP值與當前時間之間的差大於幾個月或幾天,我需要遍歷該表中的所有記錄並執行一些操作。

最佳做法是什么? 將TIMESTAMP值轉換為Unix時間還是使用某個類自己處理日期?

提前致謝。

您可以像這樣過濾結果:

result = YourModel.where("created_at >= ?", 5.days.ago)

要么

result = YourModel.where(created_at: 5.days.ago..Time.now)

您可以遍歷結果:

result.each do |item|
  #Do something with item
end

OBS:我假設TIMESTAMP列為created_at,但是您可以將其替換為您的列。

如果在該列上有索引,則應該這樣做。 如果不是,則應添加一個遷移以對該列編制索引。

之后,您可以在模型上添加一個方法,以查找比條件更早的所有記錄,如下所示:

class Model
  def self.older_than(timeframe)
    where('column_with_timestamp < ?', timeframe)
  end
end

然后,您可以查詢類似Model.older_than(1.month.ago)查詢,該查詢將返回時間戳早於指定日期的記錄。 然后,您可以像平常一樣遍歷它們

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM