2016-06-13 3 views
2

Из Rails Active Record Мне было интересно, как я могу получить записи, созданные сегодня.лучший способ получить записи, созданные сегодня с помощью 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 

что было бы лучшим способом осуществить то же самое с Ecto ??

+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

Чтобы развернуть это для тех, кто хочет обрабатывать данный часовой пояс в этой ситуации, а ваш столбец datetime хранится в формате UTC, один из способов выглядит примерно так: date = date |> Timex.Timezone.convert («Америка/Чикаго») query = from m in Model, где: m.inserted_at> =^Timex.Timezone.convert ( Timex.beginning_of_day (date), "UTC"), где: m.inserted_at < =^Timex.Timezone.convert ( Timex.end_of_day (дата), "UTC") – zgohr

Смежные вопросы