gpt4 book ai didi

timestamp - Elixir ,ecto,比较 where 子句中的时间

转载 作者:行者123 更新时间:2023-12-03 08:07:10 24 4
gpt4 key购买 nike

当我在 Elixir 中使用 ecto 创建查询时,我不太确定如何比较“where”子句中的时间。

在模式部分我声明 create_at:datetime

 schema "tenant" do
field :id, :integer
field :created_at, :datetime
# timestamps([{:inserted_at,:created_at}])

end

查询部分就像
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

看来,
where: t.created_at <= %Ecto.DateTime{{2015, 4, 27}, {10, 8, 42, 0}},
部分形式错误。有人可以告诉我如何以正确的方式做到这一点吗?

PS:关于如何定义字段 create_at ,下面的链接给了我答案

Default datetime with Ecto & Elixir

最佳答案

您不能创建 %Ecto.DateTime{}来自 erlang 日期/时间元组的结构。你需要做:

def sample_query do
query = from t in Tenant,
where: t.id == 123,
where: t.created_at == ^Ecto.DateTime.from_erl({{2015, 4, 27}, {10, 8, 42, 0}}),
select: t
end

如果您的时间值来自其他地方并且您想创建 %Ecto.DateTime{}自己构建你可以做的:
^%Ecto.DateTime{year: 2015, month: 4, day: 27, hour: 10, min: 8, sec: 42, usec: 0}

(注意^)

关于timestamp - Elixir ,ecto,比较 where 子句中的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com