> 데이터 베이스 > MySQL 튜토리얼 > 날짜 범위 비교를 수행하기 위해 MySQL에서 별도의 일, 월, 연도 필드를 어떻게 결합할 수 있습니까?

날짜 범위 비교를 수행하기 위해 MySQL에서 별도의 일, 월, 연도 필드를 어떻게 결합할 수 있습니까?

Barbara Streisand
풀어 주다: 2024-12-24 11:58:18
원래의
967명이 탐색했습니다.

How Can I Combine Separate Day, Month, and Year Fields in MySQL to Perform Date Range Comparisons?

MySQL에서 비교를 위해 날짜 필드 결합

날짜 기반 검색 필터가 있는 애플리케이션에서는 데이터베이스 스키마로 작업하는 것이 어려울 수 있습니다. 일, 월, 연도에 대한 별도의 필드에 날짜 구성 요소를 저장합니다. 이 문서에서는 이러한 필드를 결합하고 사용자가 지정한 날짜 범위와 비교할 날짜 개체를 생성하는 방법을 보여줍니다.

다음 "날짜" 테이블 구조를 고려하세요.

CREATE TABLE `date` (
  `deposition_id` varchar(11) NOT NULL default '',
  `day` int(2) default NULL,
  `month` int(2) default NULL,
  `year` int(4) default NULL,
  PRIMARY KEY  (`deposition_id`)
);
로그인 후 복사

날짜를 구성하려면 이러한 필드에서 MySQL은 다음 기능을 제공합니다.

  • MAKEDATE(): 연도에서 DATETIME 객체를 생성하고 월, 일을 1로 설정.
  • DATE_ADD(): DATETIME 객체에 지정된 간격(예: 월 또는 일)을 추가합니다.

다음을 나타내는 날짜 객체를 생성하려면 특정 날짜에 대해 다음 단계를 사용할 수 있습니다.

  1. MAKEDATE() 사용 해당 연도의 첫 번째 날에 대한 DATETIME 객체를 생성하려면:

    MAKEDATE(year, 1)
    로그인 후 복사
  2. DATE_ADD()를 사용하여 DATETIME 객체에 월을 추가합니다:

    DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH)
    로그인 후 복사
  3. 마지막으로 다음을 사용하여 DATETIME 객체에 일을 추가합니다. DATE_ADD():

    DATE_ADD(..., INTERVAL (day)-1 DAY)
    로그인 후 복사

이러한 함수를 결합하면 개별 일, 월, 연도 필드에서 완전한 날짜 개체를 구성할 수 있습니다. 그런 다음 이 날짜 개체를 날짜 범위 비교에 사용할 수 있습니다.

SELECT * FROM `date`
WHERE DATE_ADD(DATE_ADD(MAKEDATE(year, 1), INTERVAL (month)-1 MONTH), INTERVAL (day)-1 DAY)
BETWEEN '2013-01-01' AND '2014-01-01';
로그인 후 복사

이 쿼리는 "날짜" 테이블에서 결합된 날짜가 지정된 범위 내에 속하는 모든 레코드를 검색합니다. MAKEDATE()와 DATE_ADD()의 조합을 활용함으로써 MySQL은 개발자가 별도의 필드에 저장된 경우에도 날짜를 효과적으로 조작하고 비교할 수 있도록 해줍니다.

위 내용은 날짜 범위 비교를 수행하기 위해 MySQL에서 별도의 일, 월, 연도 필드를 어떻게 결합할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿