2016-06-13 51 views
2

来自Rails活动记录我想知道我怎样才能真正获取今天创建的记录。获得Ecto Phoenix今天创建的记录的最佳途径?

在Rails中,我们可以做这样的

User.where(created_at:Date.today.beginning_of_day..Date.today.end_of_day) 

或多少简洁

scope :created_today, ->(date = Date.today) { where(created_at: date..date.end_of_day) } 

User.created_today 

这将是实现与外生同样的事情,最好的方法?

+0

什么时区你想在计算“今天”? UTC,当前系统的默认值,还是特定的? – Dogbert

+0

当前系统的默认 –

回答

9

最好的办法是使用Timex库。

使用这个库,你可以做这样的事情:

date = DateTime.today |> Timex.datetime 

query = from m in Model, where: m.inserted_at >= ^Timex.beginning_of_day(date), where: m.inserted_at <= ^Timex.end_of_day(date) 

Repo.all(query) 
+0

要在这种情况下对那些希望处理给定时区并且您的日期时间列以UTC存储的应用程序进行扩展,有一种方法是这样的: date = date |> Timex.Timezone.convert (“America/Chicago”) query = from Model in, 其中:m.inserted_at> =^Timex.Timezone.convert( Timex.beginning_of_day(date),“UTC”), 其中:m.inserted_at < =^Timex.Timezone.convert( Timex.end_of_day(date),“UTC”) – zgohr