SELECT DISTINCT users, events, dates
FROM table
WHERE dates between date_format(date1, '%Y-%m-%d')
and date_format(date2, '%Y-%m-%d') or NOW() or CURDATE()....
and user = 'username'
이 꽤 일반적이지만 이름과 날짜를 교체 할 경우 (아마 당신의 목적을 위해 포맷 할 필요는 없습니다)는 null 장소 보유자에 관계없이 모든 결과를 반환합니다
당신은 할 수 또한 내부 조인해야 내가 연도와 월을 인식하지만, 당신이 이것을 변경할 수 있습니다 단지에 날짜 형식을 사용
...
하십시오 date_reference_table를 채울 ... 여기에 저장이에 대한 PROC입니다 그럼 ... 내면 조인을 할거야. date_reference 테이블은 위의 주석에서 언급 한 결과를 출력합니다.
구분 $$
CREATE PROCEDURE `generate_date_reference_table`(d1 date, d2 date)
BEGIN
declare d datetime;
create table BLMBP.date_reference (d char(7) not null);
set d = d1;
while d <= d2 do
insert into BLMBP.date_reference (d) values (date_format(d, '%Y-%m'));
set d = date_add(d, interval 1 month);
end while;
END$$
당신이 간격없이, 날짜의 목록이 포함 된 테이블에 액세스 할 수있는 경우이 쉽게 될 것입니다. 그런 식탁이 있니? 그렇지 않다면 하나 만들어 보시 겠어요? –
위의 Mark의 우수한 점은 관련 날짜가 결과 집합에없는 경우 응용 프로그램에서 암시 적으로 'NULL'이라고 가정하는 것입니다. – eggyal