MAKEDATE 함수는 지정된 인자로부터 날짜를 반환한다. 인자로 1~9999 범위의 연도와 일(day of year)에 해당하는 INTEGER 타입을 지정할 수 있으며, 1/1/1~12/31/9999 범위의 DATE 타입을 반환한다. 일(day of year)이 해당 연도를 넘어가면 다음 연도가 된다. 예를 들어, MAKEDATE(1999, 366)은 2000-01-01을 반환한다.
단, 연도에 0~69 범위의 값을 입력하면 2000년~2069년으로 처리하고, 70~99 범위의 값을 입력하면 1970년~1999년으로 처리한다.
MAKEDATE(year, dayofyear)
SELECT MAKEDATE(2010,277);
makedate(2010, 277)
======================
10/04/2010
SELECT MAKEDATE(10,277);
makedate(10, 277)
====================
10/04/2010
SELECT MAKEDATE(70,277);
makedate(70, 277)
====================
10/04/1970
SELECT MAKEDATE(100,3615902);
makedate(100, 3615902)
=========================
12/31/9999
-- return_null_on_function_errors=yes
SELECT MAKEDATE(100,3615903);
makedate(100, 3615903)
======================
NULL
SELECT MAKEDATE('9999','365');
makedate('9999', '365')
======================
12/31/9999
-- return_null_on_function_errors=no
SELECT MAKEDATE(9999,366);
ERROR: Conversion error in date format.
-- return_null_on_function_errors=yes
SELECT MAKEDATE(9999,366);
makedate(9999, 366)
======================
NULL