[MSSQL] FORMAT (Sql Server 2012 이상)
FORMAT(Transact-SQL)
SQL Server (2012 부터 사용 가능) 에서 지정된 형식 및 선택적 culture로 서식이 지정된 값을 반환합니다.
FORMAT ( value, format [, culture ] )
값
서식을 지정할 지원되는 데이터
형식의 식입니다. 유효한
형식 목록은 다음 설명 섹션의 표를 참조하세요.
형식
nvarchar 형식 패턴입니다.
문화권
선택적 nvarchar culture를 지정 하는 인수입니다.
bigint | Int64 | |
int | Int32 | |
smallint | Int16 | |
tinyint | Byte | |
decimal | SqlDecimal | |
numeric | SqlDecimal | |
float | Double | |
real | Single | |
smallmoney | Decimal | |
money | Decimal | |
date | ||
time | TimeSpan | |
datetime | ||
smalldatetime | ||
datetime2 | DateTime | |
datetimeoffset | DateTimeOffset |
1. 간단한 FORMAT 예
DECLARE @d DATETIME = '10/01/2011'; SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result' ,FORMAT ( @d, 'D', 'ko-kr' ) AS 'korea Result' ,FORMAT ( @d, 'yyyy년 MM월 dd일', 'ko-kr' ) AS 'korea (custom) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result ---------------- ----------------------------- ------------- ------------------------------------- 10/1/2011 01/10/2011 01.10.2011 2011/10/1 (1 row(s) affected) US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result ---------------------------- ----------------------------- ----------------------------- --------------------------------------- Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日 (1 row(s) affected)
2. 사용자 지정 서식 문자열이 포함된
FORMAT
다음
예에서는 사용자 지정 서식을 지정하여 숫자 값의 서식을 지정하는 방법을 보여 줍니다.
-- Current date is September 27 2012.
DECLARE @d DATETIME = GETDATE();
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';
-- Current date is September 27 2012. DECLARE @d DATETIME = GETDATE(); SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' ,FORMAT(123456789,'###-##-####') AS 'Custom Number Result';
결과 집합은 다음과 같습니다.
DateTime Result Custom Number Result
-------------- --------------------
27/09/2012 123-45-6789
(1 row(s) affected)
DateTime Result Custom Number Result -------------- -------------------- 27/09/2012 123-45-6789 (1 row(s) affected)
3. 숫자 유형이 있는 FORMAT
5
개의 행을 반환 하는 다음 예제는 Sales.CurrencyRate 테이블에 AdventureWorks2012 데이터베이스입니다. 열 EndOfDateRate 형식으로 저장 되어 money 테이블에 있습니다. 이
예에서는 서식이 지정되지 않은 상태로 열이 반환된 다음 .NET 숫자 형식, 일반 형식 및 통화 형식 유형 중 하나로 서식이
지정됩니다.
SELECT TOP(5)CurrencyRateID, EndOfDayRate ,FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Number Format' ,FORMAT(EndOfDayRate, 'G', 'en-us') AS 'General Format' ,FORMAT(EndOfDayRate, 'C', 'en-us') AS 'Currency Format' FROM Sales.CurrencyRate ORDER BY CurrencyRateID;
CurrencyRateID EndOfDayRate Numeric Format General Format Currency Format -------------- ------------ -------------- -------------- --------------- 1 1.0002 1.00 1.0002 $1.00 2 1.55 1.55 1.5500 $1.55 3 1.9419 1.94 1.9419 $1.94 4 1.4683 1.47 1.4683 $1.47 5 8.2784 8.28 8.2784 $8.28 (5 row(s) affected)
SELECT TOP(5)CurrencyRateID, EndOfDayRate ,FORMAT(EndOfDayRate, 'N', 'de-de') AS 'Numeric Format' ,FORMAT(EndOfDayRate, 'G', 'de-de') AS 'General Format' ,FORMAT(EndOfDayRate, 'C', 'de-de') AS 'Currency Format' FROM Sales.CurrencyRate ORDER BY CurrencyRateID;
CurrencyRateID EndOfDayRate Numeric Format General Format Currency Format -------------- ------------ -------------- -------------- --------------- 1 1.0002 1,00 1,0002 1,00 € 2 1.55 1,55 1,5500 1,55 € 3 1.9419 1,94 1,9419 1,94 € 4 1.4683 1,47 1,4683 1,47 € 5 8.2784 8,28 8,2784 8,28 € (5 row(s) affected)
4. 시간 데이터 유형이 있는 FORMAT
SELECT FORMAT(cast('07:35' as time), N'hh.mm'); --> returns NULL SELECT FORMAT(cast('07:35' as time), N'hh:mm'); --> returns NULL
SELECT FORMAT(cast('07:35' as time), N'hh\.mm'); --> returns 07.35 SELECT FORMAT(cast('07:35' as time), N'hh\:mm'); --> returns 07:35
댓글 없음:
댓글 쓰기