2016-10-25 3 views
3

내가 물어야 할 농담이지만, 가장 좋은 방법은 무엇인지 분명하지 않습니다. 그래서 이것은 약간의 호언 장담으로 변할 수 있습니다. 그러나 나는 Elixir가 여기에 진지하게 결여되어 있다는 생각을 가지고있다.엘릭서 : Ecto Query의 현재 날짜를 얻는 방법?

Ecto agains에서 현재 날짜를 쿼리하는 것이 매우 복잡하다는 것을 알았습니다. 예를 들어 get me every record where date column x contains a date before t과 같은 것입니다.

이제는 Erlangs :calendar.universal_time()을 사용하여 Ecto.DateTime.from_erl으로 전달하고 다시 Ecto.Date.cast으로 전달합니다. 우리는 튜플을 다시

{:ok, #Ecto.Date<2016-10-25>} 

를 얻을 수 있기 때문에 우리는 또한 패턴이

date = :calendar.universal_time() |> Ecto.DateTime.from_erl |> Ecto.Date.cast 

주 그래서

물론
{:ok, date} = :calendar.universal_time() |> Ecto.DateTime.from_erl |> Ecto.Date.cast 

내가 Ecto.Date.cast!를 사용할 수 있지만 즉, 실제 날짜와 일치 다시 알아야 할 것이고 내가 알지 못하는 몇 가지 단점이있을 수 있습니다.

그런 다음 쿼리를 작성할 수 있습니다. 하지만 매번 최소한 3 가지 기능을 호출해야합니다.

query = from m in Model, select: {m.name, m.email}, where: (m.canceled_to > ^date), order_by: [desc: m.inserted_at] 
result = Repo.all(query) 

그래서 내가 누락 된 더 나은 방법이 있습니까? 당신을 위해 Ecto.Date.utc/0

+0

하지 않습니다'Ecto.Date.utc/0' 작업 - –

+1

Hah. 그게 내가 찾고 있던 ... 고마워. –

답변

5

는 체외에서 현재 날짜를 얻으려면? - https://hexdocs.pm/ecto/Ecto.Date.html#utc/0
관련 문제