在Ecto中比较日期的正确方法是什么

时间:2017-01-30 11:19:08

标签: elixir ecto

比较范围内日期的正确方法是什么,使用减号运算符并比较日期是否大于Ecto?

  def has_valid_date_range(query) do
    from ct in query,
      where: (ct.end_date - from_now(0, "day")) > 0,
      where: (ct.end_date - from_now(0, "day")) <= ct.due_notice
  end

此查询的结果应返回end_date减去今天大于0且end_date减去今天的所有行低于due_notice

但它给我一个错误

** (Ecto.Query.CompileError) ct.end_date() - from_now(0, "day") is not a valid query expression.

1 个答案:

答案 0 :(得分:2)

正如我们在评论部分中指出的那样,您希望选择end_date在当前时间之后和当前时间due_notice天之前的记录。为此,您可以使用此查询:

where: ct.end_date > from_now(0, "day") and
       ct.end_date <= datetime_add(ct.end_date, ct.due_notice, "day")