mysql - 选择查询,其中日期列是 X 之前,其中 X 是另一列

标签 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)
    )

最佳答案

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/

相关文章:

sql - 无法使用 google cloudSQL 连接所需的端口

php - 检索特定行的 SQL 问题

MySQL 两表统计及显示

mysql - 使用组内记录排名更新 MySQL 表

Mysql 从另一个表插入值

php - PDO 在 PHP5.4 中将整数列作为字符串返回

python - Django ORM 查询 - 如何从模型字段中减去时间?

sql - Postgres 中的 Regclass

sql - 如果 sqlite 数据库包含具有相同名称/功能的多行,如何选择特定行

MySQL 正则表达式不起作用