본문 바로가기
MySql

MySQL mysql로 ​​지난 10 일 동안의 기록을 어떻게 얻을 수 있습니까?

by 베이스 공부 2021. 1. 19.
반응형

내 테이블 구조는

CREATE TABLE `survey` (
  `id` int(11) NOT NULL auto_increment,
  `submitdate` datetime default NULL,
 `answer` varchar(5) collate utf8_unicode_ci default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=499 ;

이제 지난 10 일 간의 기록을 계산하고 싶습니다. 특정 날짜에 기록이 없다고 가정합니다. 0이어야합니다.

출력은 다음과 같습니다.

date         count
19-11-2012   10
18-11-2012   30 
13-11-2012   0 
      .
      .

나는 같은 쿼리를 사용했다

SELECT COUNT( * ) , DATE( submitdate ) 
FROM survey t
WHERE t.submitdate >= ( CURDATE( ) - INTERVAL 10 
DAY ) 
GROUP BY DATE( submitdate ) 
LIMIT 0 , 30

출력은

count(*)    date(submitdate)
1   2012-11-13
2   2012-11-14
1   2012-11-15
3   2012-11-16
6   2012-11-17

날짜가있는 레코드가 없으면 0을 제공하지 않습니다.

 

해결 방법

 

이것이 필요한 것입니다.

SELECT days.day, count(survey.id)
FROM
  (select curdate() as day
   union select curdate() - interval 1 day
   union select curdate() - interval 2 day
   union select curdate() - interval 3 day
   union select curdate() - interval 4 day
   union select curdate() - interval 5 day
   union select curdate() - interval 6 day
   union select curdate() - interval 7 day
   union select curdate() - interval 8 day
   union select curdate() - interval 9 day) days
  left join survey
   on days.day = survey.submitdate
group by
  days.day

(submitdate가 날짜와 시간을 포함하는 경우 on days.day = survey.submitdate 줄을 on days.day = DATE (survey.submitdate) 로 대체해야합니다.)

 

참조 페이지 https://stackoverflow.com/questions/13443165

 

 

반응형

댓글