SELECT Запрос, где столбец даты - X назад, где X - другой столбец - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь выполнить запрос, в котором столбец даты находится так много дней / месяцев назад, используя NOW() - INTERVAL, но число дней / месяцев находится в другом столбце, который называется payment_period

SELECT * 
FROM customer_subscriptions 
WHERE 
    status = 'Active' AND (
        ( auto_renew = '1' AND expiry_date <= '".date("Y-m-d")."') 
        OR (last_charge NOW() - INTERVAL payment_period)
    )

1 Ответ

0 голосов
/ 23 февраля 2019

last_charge NOW () - ИНТЕРВАЛ payment_period

Вам не хватает двух вещей:

  • оператор между датами для сравнения (> =)
  • единица измерения для интервала

Предполагая, что payment_period выражается в днях, вы хотите:

last_charge >= NOW() - INTERVAL payment_period DAY

Другой возможностью является сохранение unit в другом столбце.и затем:

last_charge >= CASE
    WHEN unit = 'DAY'   THEN NOW() - INTERVAL val DAY
    WHEN unit = 'MONTH' THEN NOW() - INTERVAL val MONTH
    -- ... other supported units ...
END    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...