달이 한 달 전체에서 모든 날짜를 표시하려면 어떻게해야합니까 (예 : 1 ~ 3 사이의 달). 그러면이 쿼리는 1 월의 첫 번째 날짜부터 3 월 마지막 날짜. 어쩌면 아래처럼 미리보기를 할 수 있습니다. MySQL은 한 달 전체에서 모든 날짜를 표시합니다.
2013-01-01
2013-01-02
2013-01-03
..
..
2013-02-28
..
2013-03-31
는 특정 연도를 위해 필요한 경우
달이 한 달 전체에서 모든 날짜를 표시하려면 어떻게해야합니까 (예 : 1 ~ 3 사이의 달). 그러면이 쿼리는 1 월의 첫 번째 날짜부터 3 월 마지막 날짜. 어쩌면 아래처럼 미리보기를 할 수 있습니다. MySQL은 한 달 전체에서 모든 날짜를 표시합니다.
2013-01-01
2013-01-02
2013-01-03
..
..
2013-02-28
..
2013-03-31
는 특정 연도를 위해 필요한 경우
는 당신이 필요로하는 경우에 것을 추가해야? 이것에 대한 당신의 도움에 대한 감사 어떤 생각을 가지고 두 날짜 사이에 모든 날짜의 목록을 생성 당신은 탈리 (숫자)의 도움으로 그 일을 할 수 있습니다. 테이블 당신은 쉽게 당신이 할 수있는 1 월 1 월과 3 월의 마지막 날 사이의 모든 날짜의 목록을 작성하는 지금이
CREATE TABLE tally (n int not null primary key);
INSERT INTO tally
SELECT a.N + b.N * 10 + c.N * 100 + 1 n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
ORDER BY n;
등을 만들 수 있습니다이 여기
SELECT '2013-01-01' + INTERVAL t.n - 1 DAY day
FROM tally t
WHERE t.n <= DATEDIFF(LAST_DAY('2013-03-01'), '2013-01-01') + 1
는 SQLFiddle 데모입니다
select * from your_table
where month(`date`) between 1 and 3
그리고 당신이
select * from your_table
where year(`date`) = 2013
and month(`date`) between 1 and 3
나는이 쿼리를 파생 테이블과 같은 다른 테이블 (예 : 파생 테이블)과 결합하여 한 달 동안 모든 날짜를 표시하기 때문에이 함수가 있습니다. 직원 테이블 파생 테이블/쿼리 other_query | | | VVV + ---------------- + ----------------- + ---------- + | employee_id | 날짜 | 상태 | + ---------------- + ----------------- + ---------- + | 1001 | 2013-01-01 | A | + ---------------- + ----------------- + ---------- + – empugandring
SELECT Field1, Field2 FROM table WHERE dateField between '2013-01-01' and '2013-03-31'
필요한 날짜 수보다 많은 수의 항목이있는 표가있는 경우 다음을 사용할 수 있습니다.
SELECT adddate('2013-01-01', @rownum := @rownum + 1) dt FROM my_table
JOIN (SELECT @rownum := -1) r
LIMIT 31;
작은 테이블을 my_table으로 선택하십시오. my_table에 항목이 너무 많으면 limit를 사용하면 더 빨리 처리 할 수 있습니다.
이 기초는 자체 증가하는 rownum과 같은 카운터를 사용하고 있습니다.
SELECT * FROM
(SELECT adddate('2013-01-01', @rownum := @rownum + 1) dt FROM my_table
JOIN (SELECT @rownum := -1) r LIMIT 1000) temp
WHERE MONTH(dt) = 1 AND YEAR(dt) = 2015;
여전히 테이블을 만드시겠습니까? 만약 내가 테이블을 만들 필요가없는 어딘가에 파생 테이블이나 뭔가 임시 데이터가 아니라 DB에 물리학 어떤 해결책이 있습니까? – empugandring
감사합니다 @peterm, 나는 정말로 그것을 apreciate지만 여전히 내 문제를 해결할 수 없다, 어쩌면 거기에 테이블을 만들 필요가 어떤 식 으로든 없습니다. 감사합니다 – empugandring
@empugandring에 동의합니다. 나는 테이블을 만들 필요가 없다고 생각합니다. 그냥 적당하지 않은 것 같아. – Muhaimin