日期+ 3个月插入mysql列

时间:2019-04-25 06:40:07

标签: mysql

我有一个表,其中有fromdate和todate字段。我一直在尝试获取特定日期的数据。

下面是我一直没有运气尝试过的查询,

SELECT *
  FROM install
 WHERE customer != ''
   AND billtype = 'QUARTERLY'
   AND (STR_TO_DATE (fromdate, ' %m-%Y') + INTERVAL 3 MONTH=STR_TO_DATE('01-01-2018', ' %m-%Y'))

例如

如果他的用户选择2019年1月,则应显示任何具有fromdate + 3个月的行。                                 有什么建议

1 个答案:

答案 0 :(得分:1)

尝试使用日期不等式,以避免调用STR_TO_DATE

SELECT *
FROM install
WHERE
    customer <> '' AND
    billtype = 'QUARTERLY' AND
    DATE_ADD(fromdate, INTERVAL 3 MONTH) BETWEEN '2018-01-01' AND '2018-01-31';

仅供参考,您当前的语法已关闭,这就是为什么它无法按预期工作的原因。

但实际上,表达逻辑的更好方法是从2018年1月起减去 3个月:

SELECT *
FROM install
WHERE
    customer <> '' AND
    billtype = 'QUARTERLY' AND
    fromdate BETWEEN '2017-10-01' AND '2017-10-31';

此版本的查询也是SARGable,这意味着仍可以使用包含fromdate列的索引。