2017-12-24 3 views
0

모델의 타임 스탬프를 기반으로 날짜 범위를 쿼리해야합니다. 내가 지금까지 시도 포스트 그레스의 날짜가 날짜의 형태로, 예를 들어,이다 그러나날짜 범위에 대한 Ecto 쿼리

str="2017-12-18" 
{:ok, ed}=Ecto.Date.cast(str) 
ed= ed |> Ecto.Date.from_erl |> NaiveDate.from_erl! 
Repo.all(from l in Log, where: l.inserted_at == ^ed) 

입니다 무엇을 2017-12-18 19 : 58 : 01.414.

하지만 그저 시간이 아닌 날짜를 쿼리하고 싶습니다. 그러나 내가 Ecto.DateTimeNaiveDateTime을 사용하고 acurate datetime을 문자열에 전달하면 작동합니다. 하지만 난 그냥 날짜에 일치하는 대신 싶어요. 그게 어떻게 가능할까요? 감사

당신은 fragment을 사용하여 날짜에 필드를 캐스팅하고 비교할 수
+0

'에드 것은 |> Ecto.Date.from_erl |> NaiveDate.from_erl는'진짜 코드가 될 수 없습니다 , 질문을 수정하십시오. – mudasobwa

답변

3

은!

Repo.all(from l in Log, where: fragment("?::date", l.inserted_at) == ^ed) 
+0

감사합니다. Bindingless 작업에서 어떻게 사용할 수 있습니까? –

+0

LHS가 조각이기 때문에 바인딩없는 쿼리로이 작업을 수행 할 수 있다고 생각하지 않습니다. – Dogbert

관련 문제