SELECT查询日期列在X之前,X在另一列

时间:2019-02-23 09:43:11

标签: mysql sql

我正在尝试使用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 :(得分:2)

  

last_charge NOW()-间隔期付款

您缺少两件事:

  • 要比较的日期之间的运算符(> =)
  • 间隔的单位

假设付款期限表示为天,则需要:

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