mysql - 如何从 SQL 查询中检索到的日期向后移动几个月?

标签 mysql sql

我想从任何给定日期向后移动。帮助我获取给定日期后 3 个月的日期。

我尝试过 DATE_SUB、DATE_ADD 函数,它们不返回任何结果并继续运行查询。

SELECT * FROM Table a 
INNER JOIN Tabel e 
on a.MobileNumber=e.Phone_number 
AND e.bill_date<a.invoice_date
AND  e.bill_date>DATE_ADD(a.invoice_date,INTERVAL -3 MONTH)

查询持续运行,永不停止。如果我只是删除最后一个条件,它会在不到一秒的时间内显示结果。

最佳答案

按照以下方式添加索引可能有助于提高性能:

CREATE INDEX idx ON table_e (Phone_number, bill_date, col1, col2);

这里 col1col2 是可能出现在 SELECT 子句中的另外两列。该索引的策略(如果使用的话)将是扫描相对较小的table_a,该表只有309条记录。对于a中的每条记录,MySQL将使用上述索引快速查找e表中的匹配记录。

关于mysql - 如何从 SQL 查询中检索到的日期向后移动几个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57302044/

相关文章:

mysql - 在 MySQL 中使用组合索引

java - SQLiteDatabase getWritableDatabase() { 抛出新的 RuntimeException ("Stub!"); }

mysql - 我无法让 LEFT JOIN 工作

MySQL 子查询检查

mysql - 在mysql过程中的临时表中插入值

sql - 如何在 UPDATE 语句中使用 regexp_matches()?

mysql - 在mysql中选择多个计数

mysql - WAMP服务器突然停止工作

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

mysql - 检索 MySQL 中每个 record_id 的每列的最后一个非空记录