Mysql: Как получить данные с июля прошлого года до текущей даты - PullRequest
0 голосов
/ 30 апреля 2018

Я знаю, как получить данные за июль

SELECT * FROM tableName 
   WHERE MONTH(created) = 7

Но как я могу получить данные в период с июля прошлого года до текущей даты?

Ответы [ 4 ]

0 голосов
/ 30 апреля 2018

Если вам нужны данные с прошлого июля, то вам нужно найти дату последнего июля.

select t.*
from t
where (month(now()) > 7 and t.created >= date(concat(year(now()), '-01-01')) or
      (month(now()) <= 7 and t.created >= date(concat(year(now()) - 1, '-01-01')) ;
0 голосов
/ 30 апреля 2018

используется под запросом.

SELECT 
  * 
FROM
  `tableName`
WHERE MONTH(created) = 7 
AND
(CASE WHEN (MONTH(CURRENT_DATE()) < 7) 
 THEN
       YEAR(created) = YEAR(DATE_SUB(CURDATE(), INTERVAL 1 YEAR))
 ELSE
       YEAR(created) = YEAR(CURRENT_DATE())
 END)
0 голосов
/ 30 апреля 2018

Бро Попробуйте сейчас ...

    SELECT * FROM  Table_Name
WHERE event_date between (case when month(GETDATE()) >6
                                then cast( concat(year( GETDATE()),'-07-01')as datetime)    
                                    else cast( concat(year( GETDATE())-1,'-07-01')   as datetime) 
                                    end)  and GETDATE()
0 голосов
/ 30 апреля 2018

Из вашего запроса я бы пошел с:

SELECT * FROM tableName 
WHERE MONTH(created) = 7 
AND (
( MONTH(CURDATE()) <= 7 AND YEAR(created) = YEAR(CURDATE()) - 1 )
OR 
( MONTH(CURDATE()) > 7 AND YEAR(created) = YEAR(CURDATE()) )
)

Если вы хотите (как ваш вопрос в комментариях) данные ПОСЛЕ такого времени, перейдите с:

SELECT * FROM tableName 
    WHERE created <= CURDATE()
    AND (
    (
    MONTH(CURDATE()) <= 7
    AND created >= DATE_SUB(DATE_FORMAT(CURDATE(), '%Y-07-01'), INTERVAL 1 YEAR)
    )
    OR
    (
    MONTH(CURDATE()) > 7
    AND created >= DATE_FORMAT(CURDATE(), '%Y-07-01')
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...