Каков оптимальный способ сравнения дат в диапазоне, используя оператор минус и сравнение, если дата больше, чем в 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 и датой_окончания минус сегодня ниже, чем due_notice
Но он возвращает мне ошибку
** (Ecto.Query.CompileError) ct.end_date() - from_now(0, "day") is not a valid query expression.
Что именно вы пытаетесь вычислить здесь? Насколько я знаю, 'from_now' работает только с операторами сравнения в Ecto DSL. Вероятно, вы ищете 'datetime_add'. – Dogbert
Я читал документацию, но я не видел 'from_now', сравнивая с' -' функцией. Возможно, вы правы. Есть ли альтернативный способ сделать этот запрос? –
Какой тип 'due_notice' здесь? Что вы пытаетесь вычислить? – Dogbert