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