본문 바로가기
DataBase/MsSql

MSSQL FORMAT 함수 사용법 및 설명

by 아우럼 2024. 4. 20.
반응형

FORMAT 함수를 통하여 사용자는 숫자 및 날짜 자료형의 형식을 다른 함수보다 유연하게 지정할 수 있습니다.

FORMAT 함수 특징

  • MSSQL은 기본적으로 대소문자를 구분하지 않지만, FORMAT 함수의 format에는 대소문자를 구분합니다.
  • 대량의 데이터를 처리할 때는 성능에 문제가 있으므로 사용 시 주의해야 합니다.
  • FORMAT은 valid가 아닌 culture 이외의 다른 오류에 대해 NULL을 반환합니다.
  • 예를 들어 format에 지정된 값이 유효하지 않으면 NULL이 반환됩니다.

FORMAT 함수 사용법 및 설명

FORMAT 구문

-- FORMAT 구문
FORMAT( value, format [, culture ] ) ;
  • value : 서식을 지정할 지원되는 데이터 형식의 식입니다
  • format: 날짜 문자열 변환, 표준 날짜 및 시간 서식 지정자, 표준 숫자 서식 문자열, 사용자 지정 숫자 형식 문자열에서 지원하는 형식을 넣어줘야 합니다.
  • culture : culture 인수를 지정하지 않으면 현재 세션의 언어 설정을 사용합니다. 언어는 SET LANGUAGE 사용하여 변경할 수 있습니다.

culture 사용하여 형식 변환.

  • culture 형식을 입력하여 표시 형식을 변환할 수 있습니다.
-- culture 사용하여 형식 변환.
DECLARE @DateFormat DATE = '11/22/2020';
SELECT FORMAT( @DateFormat, 'd', 'en-US' ) 'USA'  
      ,FORMAT( @DateFormat, 'd', 'en-gb' ) 'British'  
      ,FORMAT( @DateFormat, 'd', 'ko-kr' ) 'korea'  
;

표준 날짜 및 시간 서식 문자열 변환.

  • 예제 소스는 표준 날짜 및 시간 서식 지정자에 대한 출력 형식 및 설명을 추가했습니다.
-- 표준 날짜 및 시간 서식 문자열
          SELECT GETDATE() orgDate, 'd' as 'FORMAT',FORMAT(GETDATE(), 'd') AS 'FORMAT DATE'  , '간단한 날짜 패턴입니다.'                AS '설명'
union all SELECT GETDATE() orgDate, 'D' as 'FORMAT',FORMAT(GETDATE(), 'D') AS 'FORMAT DATE'  , '자세한 날짜 패턴입니다.'                AS '설명'
union all SELECT GETDATE() orgDate, 'f' as 'FORMAT',FORMAT(GETDATE(), 'f') AS 'FORMAT DATE'  , '전체 날짜/시간 패턴(간단한 시간)입니다.' AS '설명'
union all SELECT GETDATE() orgDate, 'F' as 'FORMAT',FORMAT(GETDATE(), 'F') AS 'FORMAT DATE'  , '전체 날짜/시간 패턴(자세한 시간)'        AS '설명'
union all SELECT GETDATE() orgDate, 'g' as 'FORMAT',FORMAT(GETDATE(), 'g') AS 'FORMAT DATE'  , '일반 날짜/시간 패턴(간단한 시간)'        AS '설명'
union all SELECT GETDATE() orgDate, 'G' as 'FORMAT',FORMAT(GETDATE(), 'G') AS 'FORMAT DATE'  , '일반 날짜/시간 패턴(자세한 시간)입니다.' AS '설명'
union all SELECT GETDATE() orgDate, 'm' as 'FORMAT',FORMAT(GETDATE(), 'm') AS 'FORMAT DATE'  , '월/일 패턴입니다.'                     AS '설명'
union all SELECT GETDATE() orgDate, 'o' as 'FORMAT',FORMAT(GETDATE(), 'o') AS 'FORMAT DATE'  , '왕복 날짜/시간 패턴입니다.'             AS '설명'
union all SELECT GETDATE() orgDate, 'R' as 'FORMAT',FORMAT(GETDATE(), 'R') AS 'FORMAT DATE'  , 'RFC1123 패턴입니다.'                   AS '설명'
union all SELECT GETDATE() orgDate, 'R' as 'FORMAT',FORMAT(GETDATE(), 's') AS 'FORMAT DATE'  , '정렬 가능한 날짜/시간 패턴입니다.'       AS '설명'
union all SELECT GETDATE() orgDate, 't' as 'FORMAT',FORMAT(GETDATE(), 't') AS 'FORMAT DATE'  , '간단한 시간 패턴입니다.'                AS '설명'
union all SELECT GETDATE() orgDate, 'T' as 'FORMAT',FORMAT(GETDATE(), 'T') AS 'FORMAT DATE'  , '자세한 시간 패턴'                      AS '설명'
union all SELECT GETDATE() orgDate, 'U' as 'FORMAT',FORMAT(GETDATE(), 'U') AS 'FORMAT DATE'  , '유니버설 전체 날짜/시간 패턴입니다.'     AS '설명'
union all SELECT GETDATE() orgDate, 'y' as 'FORMAT',FORMAT(GETDATE(), 'y') AS 'FORMAT DATE'  , '연도 월 패턴'                          AS '설명'
;

표준 날짜 및 시간 서식 문자열 변환 예제 입니다.
표준 날짜 및 시간 서식 문자열 변환 그림.

사용자 지정 날짜 문자열 변환.

  • 날짜를 문자열로 변환할 때 FORMAT 함수를 사용할 수 있습니다.
  • 년, 월, 일 시간의 순서를 사용자가 결정할 수 있는 장점이 있습니다.
--  날짜 문자열 변환 
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'yyyy-MM-dd') AS  formatType    
union all
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss') AS formatType  
union all
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss tt','en-US') AS formatType 
union all
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss tt','ko-kr') AS formatType 
union all
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'MM-dd-yyyy HH:mm:ss') AS formatType  
union all
SELECT GETDATE() orgDate, FORMAT(GETDATE(), 'mm:ss dd-yyyy-MM HH') AS formatType
;

표준 숫자 서식 문자열 변환.

  • MSSQL 지원하는 표준 형식 지정자를 통해서 숫자 형식을 변환할 수 있습니다.
-- 자료 만들기 
SELECT * INTO FormatTable
 FROM 
 ( 
              SELECT 1.0002  AS VAL
   UNION ALL  SELECT  1.55 AS VAL
   UNION ALL  SELECT 1.99 AS VAL
   UNION ALL  SELECT  -1.4263 AS VAL
   UNION ALL  SELECT 25.2784 AS VAL
   UNION ALL  SELECT 10 AS VAL
 ) P1;

--  표준 숫자 서식 문자열 변환
SELECT VAL   ORG_VAL        
      ,FORMAT(VAL, 'C', 'en-us') AS 'USA Currency' 
      ,FORMAT(VAL, 'C', 'ko-kr') AS '한국 Currency' 
      ,FORMAT(1023, 'd','ko-kr') AS '정수만 지원'
      ,FORMAT(VAL, 'D','ko-kr')  AS '정수만 지원'
      ,FORMAT(VAL, 'F5', 'en-us') AS '소수점 5자리표시'  
      ,FORMAT(VAL, 'G10', 'en-us') AS '유효 자릿수 표시'
      ,FORMAT(VAL, 'N', 'en-us') AS '모든 숫자 형식' 
FROM FormatTable
;

사용자 지정 숫자 형식 문자열 변환.

  • 사용자 지정 숫자 형식 문자열 변환은 주로 shop(#), 숫자 제로(0)를 주로 사용합니다.
-- 사용자 지정 숫자 형식 문자열 변환.
SELECT FORMAT(123456789012, '###,###') AS '천단위 표시'
      ,FORMAT(1234567890.927, '0.00') AS '소수점 표시'
;

FORMAT 함수의 성능

  • FORMAT 함수는 cast, convert 함수보다 더 많은 유연성을 제공하므로 사용하기는 편하지만, 내부적으로 문자열 연산을 수행하기 때문에 대량의 데이터를 처리할 때 성능상 문제가 있습니다.
반응형