mysql 선택 쿼리에서 두 날짜 사이의 날짜 목록을 가져오는 방법
선택 쿼리에 따라 두 날짜 사이에 날짜 목록을 원합니다.예를 들어 다음과 같습니다.
'2012-02-10'과 '2012-02-15'를 지정하면 결과가 필요합니다.
date
----------
2012-02-10
2012-02-11
2012-02-12
2012-02-13
2012-02-14
2012-02-15
어떻게 가지?
시험:
select * from
(select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 i union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between '2012-02-10' and '2012-02-15'
-최장 300년 후까지.
[UrvishAtSynapse의 권장 편집에 따라 수정되었습니다]
set @i = -1;
SELECT DATE(ADDDATE('2012-02-10', INTERVAL @i:=@i+1 DAY)) AS date FROM `table`
HAVING
@i < DATEDIFF('2012-02-15', '2012-02-10')
그러면 지정된 대로 결과 세트가 정확히 반환됩니다.이 쿼리에서는 dateiff와 addate의 두 가지 다른 날짜만 변경하면 됩니다.
MySQL 5.5에서는 승인된 답변이 작동하지 않았습니다.쿼리를 업데이트했습니다.
select * from
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) selected_date from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where selected_date between '2012-02-10' and '2012-02-15'
이 게시물을 보세요: 두 날짜 사이의 날짜 목록을 가져옵니다.
Ron Savage가 실행한 저장 프로시저를 확인해 보세요.이것은 당신이 필요로 하는 것에 해당하는 것 같습니다!
사용할 필요가 있는 모든 날짜를 포함하는 테이블을 만들 수 있습니다.
date
2000-01-01
2000-01-02
2000-01-03
...etc..
2100-12-30
2100-12-31
그런 다음 다음과 같이 테이블을 쿼리합니다.
SELECT date
FROM dates
WHERE date BETWEEN '2012-02-10' AND '2012-02-15'
SELECT * FROM tablexxx WHERE datecol BETWEEN '2012-02-10' AND '2012-02-15';
언급URL : https://stackoverflow.com/questions/9295616/how-to-get-list-of-dates-between-two-dates-in-mysql-select-query
'source' 카테고리의 다른 글
| 온라인 정규식 테스터에서 작동하는 MariaDB regex가 SELECT WHERE REGEXP에서 작동하지 않음 (0) | 2022.11.13 |
|---|---|
| MySQL tc.log 파일 (0) | 2022.11.13 |
| Vuex 변환 매개 변수와 충돌하는 SonarQube 규칙을 사용하지 않도록 설정하려면 어떻게 해야 합니까? (0) | 2022.11.13 |
| JavaScript 연산, 소수점 2자리 반올림 (0) | 2022.11.13 |
| Windows는 JAVA_를 무시합니다.홈: JDK를 기본값으로 설정하는 방법 (0) | 2022.11.13 |