카테고리:

날짜 및 시간 함수

DATE_FROM_PARTS

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

별칭:

DATEFROMPARTS

구문

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

인자

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                  |
+-----------------------------+

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

  • 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                       |
+-------------------------------+----------------------------------+

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                   |
+-----------------------------+-----------------------------+------------------------------+
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                   |
+-----------------------------+-----------------------------+------------------------------+
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                    |
+-------------------------------+
맨 위로 이동