Как получить информацию только за последние 6 месяцев в mysql

Может ли кто-нибудь помочь получить информацию только за последние 6 месяцев. Пробовал с ответами, которые уже упоминались на сайте stackoverflow и mysql. Но не получил требуемого результата.

я пробовал с разными комбинациями. но не смог.

mysql> select date from bo_rr;
+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-09-14 |
| 2013-09-14 |
| 2013-06-19 |
+------------+
6 rows in set (0.00 sec)

mysql> select date from bo_rr where date > date_sub(now(),interval 6 month);
+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-09-14 |
| 2013-09-14 |
| 2013-06-19 |
+------------+
6 rows in set (0.00 sec)

mysql> select date from bo_rr where date >= date_sub(now(),interval 6 month);
+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-09-14 |
| 2013-09-14 |
| 2013-06-19 |
+------------+
6 rows in set (0.00 sec)

mysql> select date from bo_rr where date < date_sub(now(),interval 6 month);
Empty set (0.00 sec)

mysql> select date from bo_rr where date <= date_sub(now(),interval 6 month);
Empty set (0.00 sec)

mysql> select date from bo_rr where date > date_sub(now(),interval -6 month);
Empty set (0.00 sec)

mysql> select date from bo_rr where date >= date_sub(now(),interval -6 month);
Empty set (0.00 sec)

mysql> select date from bo_rr where date < date_sub(now(),interval -6 month);
+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-09-14 |
| 2013-09-14 |
| 2013-06-19 |
+------------+
6 rows in set (0.00 sec)

mysql> select date from bo_rr where date <= date_sub(now(),interval -6 month);
+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-09-14 |
| 2013-09-14 |
| 2013-06-19 |
+------------+
6 rows in set (0.00 sec)

person divakar.scm    schedule 19.06.2013    source источник


Ответы (1)


Поскольку у вас есть будущие записи, вам необходимо установить как начальные, так и конечные граничные условия. Вы можете удобно сделать это с помощью BETWEEN.

Пытаться

SELECT date 
  FROM bo_rr 
 WHERE date BETWEEN CURDATE() - INTERVAL 6 MONTH AND CURDATE()

or

SELECT date 
  FROM bo_rr 
 WHERE date <= CURDATE() 
   AND date >= CURDATE() - INTERVAL 6 MONTH

Вывод:

+------------+
| date       |
+------------+
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-14 |
| 2013-06-19 |
+------------+
person peterm    schedule 19.06.2013
comment
Большое спасибо @peterm :-) - person divakar.scm; 19.06.2013
comment
Добро пожаловать :) Если это было то, что вы искали, пожалуйста, подумайте о примите ответ. - person peterm; 19.06.2013