본문 바로가기
DataBase

MSSQL의 FORMAT 함수 가이드: 사용법, 대체 방법, 실전 사례

by 대박플머 2024. 11. 4.

MSSQL의 FORMAT 함수는 SQL Server 2012부터 도입되어 문자열 형식화 작업에서 매우 유용하게 사용됩니다. 이 함수는 특정 날짜나 숫자를 사용자 지정 형식으로 변환할 수 있어 다양한 지역과 포맷 요구사항을 충족시키기 좋습니다. 이 글에서는 FORMAT 함수의 도입 배경, 함수 사용 방법, 그리고 MSSQL 2012 이전 버전에서 형식을 지정하는 대체 방법을 다룹니다. 또한 실전 예제도 포함하여 FORMAT 함수의 강점을 소개합니다.

1. FORMAT 함수 개요

FORMAT 함수는 날짜와 숫자 데이터를 형식화하는 데 사용되며, 다음과 같은 구문을 가집니다:

FORMAT ( value, format [, culture ] )
  • value: 포맷할 값입니다. 주로 날짜나 숫자 데이터 형식이 됩니다.
  • format: 원하는 형식 문자열입니다. 예를 들어, 날짜를 yyyy-MM-dd 형식으로 표현하거나, 숫자를 통화 형식으로 지정할 수 있습니다.
  • culture: 선택 사항으로, 특정 문화권의 형식을 적용할 때 사용합니다. 기본값은 서버의 설정 문화권입니다.

예를 들어, 다음은 FORMAT을 사용하여 현재 날짜를 특정 형식으로 표시하는 방법입니다.

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd', 'en-US') AS FormattedDate

출력 결과는 2023-12-31과 같은 형식이 됩니다.

2. FORMAT 함수 도입 전 대체 방법

SQL Server 2012 이전에는 FORMAT 함수가 없었으므로, 여러 문자열 함수(CONVERT, CAST, DATEPART)를 조합하여 형식화 작업을 수행해야 했습니다.

예시: 날짜 형식 지정

FORMAT 함수가 없을 때는 CONVERT 함수와 스타일 코드를 사용하여 날짜를 형식화할 수 있었습니다.

SELECT CONVERT(VARCHAR, GETDATE(), 23) AS FormattedDate

위 코드는 날짜를 yyyy-MM-dd 형식으로 변환합니다. 스타일 코드 23은 ISO 형식을 의미합니다.

또는, DATEPARTCAST를 활용해 특정 형식으로 날짜를 조합할 수도 있었습니다.

SELECT
    CAST(YEAR(GETDATE()) AS VARCHAR) + '-' +
    RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR), 2) + '-' +
    RIGHT('0' + CAST(DAY(GETDATE()) AS VARCHAR), 2) AS FormattedDate

이 방법은 코드가 다소 복잡하지만, 원하는 날짜 형식을 유연하게 구성할 수 있습니다.

예시: 숫자 형식 지정

숫자를 형식화하려면 FORMAT 함수가 없을 경우 기본 숫자 계산을 사용하거나 문자형 변환 후 원하는 위치에 구분자를 추가하는 방식을 활용해야 했습니다.

SELECT
    '$' + FORMAT(CAST(1234567 AS MONEY), 'N', 'en-US') AS FormattedNumber

MONEY 타입을 활용하여 통화 형식을 지정할 수도 있었습니다.

3. FORMAT 함수의 실전 사용 사례

실제 업무 환경에서 FORMAT 함수는 특정 날짜 형식이 필요하거나, 다국어 지원이 필요한 보고서에서 자주 활용됩니다. 예를 들어, 다양한 통화 형식을 다루는 금융 애플리케이션에서는 FORMAT 함수를 통해 각 지역에 맞는 통화 형식을 제공할 수 있습니다.

예제: 지역별 날짜 및 통화 형식

회계 보고서에서 여러 국가의 통화 형식과 날짜를 맞추어 출력하는 경우, 다음과 같이 사용할 수 있습니다.

SELECT
    FORMAT(1234567.89, 'C', 'en-US') AS US_Currency,   -- 미국 달러 형식
    FORMAT(1234567.89, 'C', 'ko-KR') AS KR_Currency,   -- 한국 원화 형식
    FORMAT(GETDATE(), 'yyyy-MM-dd', 'en-GB') AS UK_Date,  -- 영국 날짜 형식
    FORMAT(GETDATE(), 'dddd, MMMM dd, yyyy', 'fr-FR') AS French_Date -- 프랑스 날짜 형식

이 코드는 FORMAT 함수를 사용하여 지정된 문화권에 맞는 형식으로 숫자와 날짜를 변환합니다. 결과적으로 각각의 문화권에 맞게 형식화된 데이터를 쉽고 일관되게 출력할 수 있어, 국제화를 지원하는 애플리케이션에서 큰 이점이 됩니다.

4. 성능 고려사항

FORMAT 함수는 CLR(Common Language Runtime) 함수로 구현되어 있습니다. 따라서 단순 문자열 조작에 비해 느릴 수 있으므로, 대량의 데이터에 반복적으로 적용할 경우 성능 이슈가 발생할 수 있습니다. 이러한 경우, 성능을 최적화하기 위해 FORMAT 대신 기존의 CONVERT 또는 CAST 함수를 사용하는 것이 유리할 수 있습니다.

5. 요약 및 결론

FORMAT 함수는 SQL Server 2012부터 제공되어 문자열 형식화 작업을 편리하게 수행할 수 있게 해줍니다. 다국어 환경을 지원하거나 특정 형식의 날짜와 숫자가 필요한 경우 매우 유용하지만, 성능에 민감한 애플리케이션에서는 주의가 필요합니다. MSSQL 2012 이전에는 CONVERTDATEPART 같은 함수 조합을 통해 형식화 작업을 수행했으며, FORMAT 함수는 이 과정을 훨씬 간소화하고 가독성을 높여 줍니다.