我正在尝试使用 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)
)
最佳答案
last_charge NOW() - INTERVAL 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
关于mysql - 选择查询,其中日期列是 X 之前,其中 X 是另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840277/