w-6ren">
gpt4 book ai didi

elixir - 如何使用ecto获取上周的记录

转载 作者:行者123 更新时间:2023-12-01 22:26:12 26 4
gpt4 key购买 nike

MyApp.Order
|> where([m], m.inserted_at > datetime_add(^Ecto.DateTime.utc, -2, "week"))
|> where([m], m.inserted_at < datetime_add(^Ecto.DateTime.utc, 0, "week"))

datetime_add(^Ecto.DateTime.utc, 0, "week") 似乎不是本周。因此,此查询获取上周和本周的记录。

或者,

  defp weekly_orders do
{interval1, interval2} = week_intervals
MyApp.Order
|> where([m], m.inserted_at >= datetime_add(^Ecto.DateTime.utc, ^interval1, "day"))
|> where([m], m.inserted_at < datetime_add(^Ecto.DateTime.utc, ^interval2, "day"))
end

defp week_intervals do
{-(day_of_the_week + 6) , -(day_of_the_week - 1)}
end
defp day_of_the_week do
:erlang.date
|> :calendar.day_of_the_week
end

周一失败,因为 datetime_add(Ecto.DateTime.utc, 0, "day")

  1. datetime_add(Ecto.DateTime.utc, 0, "day") 返回或表示什么?
  2. 使用 ecto 查询上周记录的正确方法是什么?

最佳答案

datetime_add(Ecto.DateTime.utc, 0, "day") 将 0 天添加到当前日期时间,因此它基本上什么都不做。

我会在这里使用日期而不是日期时间,因为您真的对一周中的几天更感兴趣。所以也许像

distance_to_monday = -(:erlang.date |> :calendar.day_of_the_week) + 1
distance_to_sunday = 7 - (:erlang.date |> :calendar.day_of_the_week)

MyApp.Order
|> where([m], m.inserted_at >= date_add(^Ecto.Date.utc, ^distance_to_monday, "day"))
|> where([m], m.inserted_at <= date_add(^Ecto.Date.utc, ^distance_to_sunday, "day")

关于elixir - 如何使用ecto获取上周的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998296/

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