집 >데이터 베이스 >MySQL 튜토리얼 >연도를 무시하고 향후 14일 이내에 기념일을 효율적으로 찾는 방법은 무엇입니까?
날짜 계산에서 연도를 무시하는 방법
문제:
기념일이 있는 날짜를 선택하세요. 해당 연도를 제외한 다음 14일 구성 요소.
원래 쿼리:
SELECT * FROM events WHERE EXTRACT(month FROM "date") = 3 AND EXTRACT(day FROM "date") < EXTRACT(day FROM "date") + 14
문제:
월이 줄바꿈하므로 이 쿼리에서는 다음 날짜 이후의 기념일을 놓칠 수 있습니다. 현재의 끝 월.
해결책:
1. 시리즈 생성 사용:
SELECT * FROM events WHERE (date > '2013-03-01' AND date < '2013-04-01')
이 쿼리는 날짜 범위를 명시적으로 지정하여 연도를 무시합니다. 단, 기념일 기간에 따라 유동적이지 않습니다.
2. 날짜 수학 사용:
SELECT event_date FROM event_table WHERE (event_date >= CURRENT_DATE AND event_date <= CURRENT_DATE + INTERVAL '14 days');
이 쿼리는 날짜 수학을 사용하여 기념일 날짜 범위를 계산합니다. 더 유연하지만 큰 테이블의 경우 성능이 느려질 수 있습니다.
3. 함수 사용(권장):
CREATE FUNCTION get_anniversary(date date) RETURNS date AS BEGIN RETURN date PARTITION BY YEAR; END; SELECT event_date FROM event_table WHERE get_anniversary(event_date) >= CURRENT_DATE AND get_anniversary(event_date) <= CURRENT_DATE + INTERVAL '14 days';
이 쿼리는 날짜에서 연도를 제거하는 함수를 사용합니다. 고유한 연도별로 파티션을 생성하므로 큰 테이블의 경우 속도가 더 빨라집니다.
위 내용은 연도를 무시하고 향후 14일 이내에 기념일을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!