[MSSQL] 년, 월, 일 추출 방법 (YEAR, MONTH, DAY)
- 데이터베이스/MSSQL
- 2021. 9. 7.
SQL Server에서 날짜 데이터의 년, 월, 일을 추출할 때 사용하는 기본적인 함수는 YEAR, MONTH, DAY이며, 정수로 결과를 반환한다. 앞의 세 가지 함수 외에도 DATENAME, DATEPART라는 함수도 있는데 DATENAME 함수는 결과를 문자로 반환하고 DATEPART 함수는 결과를 정수로 반환한다.
YEAR, MONTH, DAY 함수 사용법
SELECT YEAR(GETDATE()) AS [YEAR]
, MONTH(GETDATE()) AS [MONTH]
, DAY(GETDATE()) AS [DAY]
위의 세 가지 함수를 사용하여 날짜에서 쉽게 년, 월, 일을 추출할 수 있다.
그러나 반환 값이 정수이므로 문자열과 합치게 되면 오류가 발생한다.
반환 값을 문자열과 합치는 방법
SELECT CONCAT(YEAR(GETDATE()), '년') AS [방법1]
, CAST(YEAR(GETDATE()) AS VARCHAR) + '년' AS [방법2]
YEAR, MONTH, DAY 함수로 추출된 값을 문자열과 합치기 위해서는 CONCAT 함수를 사용하거나, CAST 함수를 사용하여 합치면 된다. CONCAT 함수를 사용하는 것이 조금 더 편한 것 같다.
DATENAME 함수를 사용하여 년, 월, 일 추출
SELECT DATENAME(YEAR, GETDATE()) + '년' AS [YEAR]
, DATENAME(MONTH, GETDATE()) + '월' AS [MONTH]
, DATENAME(DAY, GETDATE()) + '일' AS [DAY]
DATENAME 함수는 반환 값이 문자이므로 문자열과 쉽게 합칠 수 있다. 그러나 조금 특이한 점은 월이 한자리 수 인경우 "0"이 앞에 붙어있는데, 일자 부분은 "0"이 붙지 않는다.
월, 일 앞에 "0" 채우는 방법
SELECT FORMAT(DAY(GETDATE()), '00') AS [방법1]
, RIGHT(CONCAT('00', DAY(GETDATE())), 2) AS [방법2]
월, 일 앞부분에 "0"을 채우기 위해서는 FORMAT 함수나 RIGHT 함수를 사용하면 쉽게 해결이 된다. FORMAT 함수는 SQL Server 2012부터 사용할 수 있으므로 이전 버전이면 RIGHT 함수를 사용해야 한다.