2017-12-24 1 views
0

Ich muss den Datumsbereich auf der Grundlage von Zeitstempeln im Modell abfragen. , was ich habe versucht, so weit istEcto Abfrage für den Datumsbereich

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) 

jedoch das Datum in dem Postgres in Form von Datetime ist, z.B. 2017-12-18 19: 58: 01.414.

aber ich möchte nur auf das Datum und nicht die Zeit abfragen. Wenn ich jedoch und NaiveDateTime verwende und die genaue Datetime in String überlasse, funktioniert es. aber ich möchte nur auf das Datum abgleichen. Wie kann das möglich sein? Dank

+0

'ed |> Ecto.Date.from_erl |> NaiveDate.from_erl' kann kein richtiger Code sein Bitte korrigieren Sie die Frage. – mudasobwa

Antwort

3

Sie das Feld ein fragment zu einem Zeitpunkt abgeben können und anschließend das vergleichen:

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

Danke, wie kann ich es im Bindingless-Betrieb verwenden –

+0

Ich denke nicht, dass dies mit einer verbindlichen Abfrage durchgeführt werden kann, da die LHS ein Fragment ist. – Dogbert

Verwandte Themen