[MSSQL] 년, 월, 일 추출 방법 (YEAR, MONTH, DAY)

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 함수를 사용해야 한다.

 

 

[MSSQL] FORMAT 함수 사용법 (TO_CHAR, 날짜, 소수점)

SQL Server 2012 버전부터 FORMAT 함수가 추가되었다. 오라클에서는 TO_CHAR 함수를 사용하여 날짜 형식을 문자열로 쉽게 변환을 할 수 있고, MSSQL에서는 CONVER 함수를 사용하여 변환이 가능하지만 조금

gent.tistory.com

 

[MSSQL] 문자열 합치기 (CONCAT, +)

SQL Server에서 문자열을 합칠 때는 CONCAT 함수와 더하기(+) 연산자를 사용한다. 문자열을 합칠 때는 되도록이면 CONCAT 함수를 사용할 것을 권장하지만, 더하기 연산자를 사용하는 것이 더 익숙하기

gent.tistory.com

 

 

댓글

Designed by JB FACTORY