如何正确处理间隔条件?

时间:2015-04-16 18:02:05

标签: mysql sql

我根据间隔进行了查询以显示信息。

这里是表

|id|  |date_payment|
  1    '2014-11-18' 
  2    '2014-12-18'     
  3    '2015-01-27' 
  5    '2015-03-20' 
  6    '2015-04-18' 
  7    '2015-05-27' 
  8    '2015-06-20' 
  9    '2015-07-18' 
 10    '2015-08-27'
 11    '2015-09-20'

我正在尝试使用

显示信息

例如,使用year = 2014和month = 11作为dinamic值,间隔为4个月,并且应该得到以下结果:

|id|  |date_payment|
  1    '2014-11-18' 
  2    '2014-12-18'     
  3    '2015-01-27' 

这是我的问题:

 SET @var_year = '2014';
 SET @var_month = '11';

 SELECT * FROM payments
 WHERE date_payment = DATE_ADD('2014-11', INTERVAL 4 MONTH)

我的查询无效并显示结果。

Here is the live example

2 个答案:

答案 0 :(得分:1)

DATE_ADD INTERVAL 4 MONTH只是在您的约会('2014-11-01')

中添加了4个月

此查询将返回您期望的内容

SET @var_year = '2014';
SET @var_month = '11';

SET @from = STR_TO_DATE(CONCAT(@var_year, '/', @var_month, '/01'), '%Y/%m/%d');
SET @to = DATE_ADD(@from, INTERVAL 4 MONTH);

SELECT * FROM payments
WHERE date_payment BETWEEN @from AND @to;

这里有实例

http://sqlfiddle.com/#!9/013b6/42

希望这有帮助

答案 1 :(得分:1)

SET @var_year = '2014';
SET @var_month = '11';

SELECT * FROM payments
WHERE date_payment = CONCAT(@var_year, '-', @var_month, '-01') + INTERVAL 4 MONTH;

由于:

SET @var_year = '2014';
SET @var_month = '11';

SELECT CONCAT(@var_year, '-', @var_month, '-01') + INTERVAL 4 MONTH AS date;
+------------+
| date       |
+------------+
| 2015-03-01 |
+------------+