카테고리:

날짜 및 시간 함수

DATE_FROM_PARTS

연도, 월, 일을 나타내는 개별 숫자 구성 요소에서 날짜를 만듭니다.

별칭:

DATEFROMPARTS

구문

DATE_FROM_PARTS( <year>, <month>, <day> )
Copy

인자

year

날짜를 빌드하기 위해 연도로 사용할 정수 식입니다.

month

날짜를 빌드하기 위해 월로 사용할 정수 식으로, 1월은 1로, 12월은 12로 표시됩니다.

day

날짜를 빌드하기 위해 일로 사용할 정수 식으로, 일반적으로 1-31 범위입니다.

사용법 노트

DATE_FROM_PARTS는 일반적으로 “정상” 범위(예: 1-12월, 1-31일)의 값을 처리하는 데 사용되지만, 이러한 범위 밖의 값도 처리합니다. 이를 통해 예를 들어, 1년 중 N번째 날을 선택하여 일부 계산을 단순화할 수 있습니다.

연도, 월, 일 값은 음수일 수 있습니다(예: 특정 날짜보다 N개월 앞선 날짜를 계산하기 위해). 음수의 동작은 완전히 직관적이지는 않습니다. 자세한 내용은 예 섹션을 참조하십시오.

정상 범위의 구성 요소:

SELECT DATE_FROM_PARTS(1977, 8, 7);
+-----------------------------+
| DATE_FROM_PARTS(1977, 8, 7) |
|-----------------------------|
| 1977-08-07                  |
+-----------------------------+
Copy

정상 범위를 벗어난 구성 요소:

  • 100번째 날(2010년 1월 1일부터)

  • 24개월(2010년 1월 1일부터)

SELECT DATE_FROM_PARTS(2010, 1, 100), DATE_FROM_PARTS(2010, 1 + 24, 1);
+-------------------------------+----------------------------------+
| DATE_FROM_PARTS(2010, 1, 100) | DATE_FROM_PARTS(2010, 1 + 24, 1) |
|-------------------------------+----------------------------------|
| 2010-04-10                    | 2012-01-01                       |
+-------------------------------+----------------------------------+
Copy

0 또는 음수가 있는 구성 요소:

SELECT DATE_FROM_PARTS(2004, 1, 1),   -- January 1, 2004, as expected.
       DATE_FROM_PARTS(2004, 0, 1),   -- This is one month prior to DATE_FROM_PARTS(2004, 1, 1), so it's December 1, 2003.
                                      -- This is NOT a synonym for January 1, 2004.
       DATE_FROM_PARTS(2004, -1, 1)   -- This is two months (not one month) before DATE_FROM_PARTS(2004, 1, 1), so it's November 1, 2003.
       ;
+-----------------------------+-----------------------------+------------------------------+
| DATE_FROM_PARTS(2004, 1, 1) | DATE_FROM_PARTS(2004, 0, 1) | DATE_FROM_PARTS(2004, -1, 1) |
|-----------------------------+-----------------------------+------------------------------|
| 2004-01-01                  | 2003-12-01                  | 2003-11-01                   |
+-----------------------------+-----------------------------+------------------------------+
Copy
SELECT DATE_FROM_PARTS(2004, 2, 1),   -- February 1, 2004, as expected.
       DATE_FROM_PARTS(2004, 2, 0),   -- This is one day prior to DATE_FROM_PARTS(2004, 2, 1), so it's January 31, 2004.
       DATE_FROM_PARTS(2004, 2, -1);  -- Two days prior to DATE_FROM_PARTS(2004, 2, 1) so it's January 30, 2004.
+-----------------------------+-----------------------------+------------------------------+
| DATE_FROM_PARTS(2004, 2, 1) | DATE_FROM_PARTS(2004, 2, 0) | DATE_FROM_PARTS(2004, 2, -1) |
|-----------------------------+-----------------------------+------------------------------|
| 2004-02-01                  | 2004-01-31                  | 2004-01-30                   |
+-----------------------------+-----------------------------+------------------------------+
Copy
SELECT DATE_FROM_PARTS(2004, -1, -1);  -- Two months and two days prior to DATE_FROM_PARTS(2004, 1, 1), so it's October 30, 2003.
+-------------------------------+
| DATE_FROM_PARTS(2004, -1, -1) |
|-------------------------------|
| 2003-10-30                    |
+-------------------------------+
Copy