我根据间隔进行了查询以显示信息。
这里是表
|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)
我的查询无效并显示结果。
答案 0 :(得分:1)
DATE_ADD INTERVAL 4 MONTH
只是在您的约会('2014-11-01')
此查询将返回您期望的内容
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 |
+------------+