Kiedy tworzę zapytanie używając ecto w Elixir, nie jestem naprawdę pewny jak porównać czas w "gdzie" klauzuli.Eliksir, ecto, porównaj czas w miejscu gdzie klauzula
W ramach schematu Oświadczam create_at
jak :datetime
schema "tenant" do
field :id, :integer
field :created_at, :datetime
# timestamps([{:inserted_at,:created_at}])
end
a część kwerendy jest jak
def sample_query do
query = from t in Tenant,
where: t.id == 123,
where: t.created_at == %Ecto.DateTime{{2015, 4, 27}, {10, 8, 42}},
select: t
end
Wydaje się, że
where: t.created_at <= %Ecto.DateTime{{2015, 4, 27}, {10, 8, 42, 0}},
część jest zła Formularz. Czy ktoś może mi powiedzieć, jak to zrobić we właściwy sposób?
PS: o tym, jak do zdefiniowania pola create_at
, link poniżej dał mi odpowiedź
Default datetime with Ecto & Elixir
To pracował !!! ale wydaje się, że muszę zdefiniować 'created_at' jak' timestamps ([{: inserted_at,: created_at}]) 'zamiast' created_at:: datetime' –
To nie działa dla mnie. Nadal dostaję "gdzie nie można rzutować na typ: datetime w zapytaniu" Używam^i konwertuję datę erl na Ecto.DateTime. Ecto.DateTime.from_erl (: calendar.universal_time()) –
@JB: działa po zamianie: kalendarza z poprawną krotką daty? jeśli tak, być może będziesz musiał ocenić: kalendarz i wykonać konwersję typu w innej zmiennej, a następnie^zmienną w klauzuli where. –