2010-11-24 31 views
3

我需要查找在一週的特定一天創建的所有記錄。 我只有可用的標準模型日期時間時間戳。 我將如何去做在主動記錄這樣做?查找在該周的特定一天創建的所有記錄

+0

Rails 2或3? 您的意思是指某一天24.11.2010還是「星期四」作爲星期幾? – 2010-11-24 16:23:57

+0

相關問題? http://stackoverflow.com/questions/742277/rails-find-tasks-that-were-created-on-a-certain-day – 2010-11-24 16:24:49

回答

2

您可以在MySQL中使用DAYOFWEEK函數並將它傳遞給:conditions選項。假設你有一個模型叫做項目,這將返回所有在週日創建的項目:

Item.all(:條件=> [ '?DAYOFWEEK(created_at)=',1])

使用Postgres你可以做類似to_char

請注意,使用這樣的函數可能會使數據庫執行全表掃描,因爲至少MySQL不支持向函數添加索引。如果這是您期望經常進行的操作,您可能需要考慮將星期幾提取到另一列。

1

獲得自Unix Epoch以來的秒數。 Time.to_i在Ruby中這樣做。

使用7的模數來獲得星期幾(0到6)。

dayOfWeek = (epochseconds/86400) % 7; 
3

要跟進賈斯汀的回答

where("extract(dow from created_at) = ?", Date.today.wday) 

這是我用我的Postgres的應用程序是什麼。這將查找與當天同一天創建的所有記錄。例如,如果今天是星期二,它會查找在星期二創建的所有記錄。

相關問題