다음을 통해 공유


FORMAT(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

지정된 형식 및 선택적 culture로 서식이 지정된 값을 반환합니다. FORMAT 날짜/시간 및 숫자 값의 로캘 인식 형식 지정에 문자열로 함수를 사용합니다. 일반 데이터 형식 변환의 경우 사용 CAST 하거나 CONVERT.

Transact-SQL 구문 표기 규칙

Syntax

FORMAT( value , format [ , culture ] )

참고 항목

SQL Server 2014(12.x) 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

value

서식을 지정할 지원되는 데이터 형식의 식입니다. 유효한 형식 목록은 주의 섹션의 표를 참조하세요 .

format

nvarchar 형식 패턴

형식 인수는 표준 서식 문자열(예"C": 또는)으로 유효한 .NET Framework 형식 문자열을 "D"포함하거나 날짜 및 숫자 값에 대한 사용자 지정 문자 패턴(예"MMMM DD, yyyy (dddd)": )으로 포함되어야 합니다. 복합 서식은 지원되지 않습니다.

이러한 형식 지정 패턴에 대한 자세한 설명은 .NET Framework 설명서에서 일반적인 문자열 서식 지정, 사용자 지정 날짜 및 시간 형식 및 사용자 지정 숫자 형식을 참조하세요. 자세한 내용은 서식 지정 형식을 참조하세요.

문화권

culture를 지정하는 선택적 nvarchar 인수입니다.

문화권 인수가 제공되지 않으면 현재 세션의 언어가 사용됩니다. 이 언어는 암시적으로 설정되거나 문을 사용하여 명시적으로 설정됩니다 SET LANGUAGE . culture 는 .NET Framework에서 지원하는 모든 문화권을 인수로 허용하며 SQL Server에서 명시적으로 지원하는 언어로 제한되지 않습니다. 문화권 인수가 유효 FORMAT 하지 않으면 오류가 발생합니다.

반환 형식

nvarchar 또는 null

반환 값의 길이는 format에 의해 결정됩니다.

설명

FORMAT는 유효하지 않은 문화권 이외의 오류에 대해 반환 NULL 합니다. 예를 들어 NULL 형식으로 지정된 값이 유효하지 않으면 반환됩니다.

함수가 FORMAT 비결정적입니다.

FORMAT 는 .NET Framework CLR(공용 언어 런타임)의 존재 여부에 의존합니다.

이 함수는 CLR의 존재 여부에 따라 달라지므로 원격으로 사용할 수 없습니다. CLR이 설치되어 있어야만 실행되는 함수를 원격에서 호출할 경우 원격 서버에서 오류가 발생합니다.

FORMAT 는 콜론과 마침표가 이스케이프되어야 함을 지시하는 CLR 서식 지정 규칙을 사용합니다. 따라서 형식 문자열(두 번째 매개 변수)에 콜론 또는 마침표가 포함된 경우 입력 값(첫 번째 매개 변수)이 시간 데이터 형식인 경우 콜론 또는 마침표는 백슬래시로 이스케이프되어야 합니다. 4. 시간 데이터 형식이 포함된 FORMAT

다음 표에서는 value 인수에 사용할 수 있는 데이터 형식과 함께 .NET Framework 매핑에서 이에 해당하는 데이터 형식을 보여 줍니다.

Category Type .NET 형식
숫자 bigint Int64
숫자 int Int32
숫자 smallint Int16
숫자 tinyint Byte
숫자 decimal SqlDecimal
숫자 numeric SqlDecimal
숫자 float Double
숫자 real Single
숫자 smallmoney Decimal
숫자 money Decimal
날짜 및 시간 date DateTime
날짜 및 시간 time TimeSpan
날짜 및 시간 datetime DateTime
날짜 및 시간 smalldatetime DateTime
날짜 및 시간 datetime2 DateTime
날짜 및 시간 datetimeoffset DateTimeOffset

A. 간단한 FORMAT 예

다음 예에서는 다양한 culture에 따라 형식이 지정된 간단한 날짜를 반환합니다.

DECLARE @d DATE = '11/22/2020';

SELECT FORMAT(@d, 'd', 'en-US') 'US English',
    FORMAT(@d, 'd', 'en-gb') 'British English',
    FORMAT(@d, 'd', 'de-de') 'German',
    FORMAT(@d, 'd', 'zh-cn') 'Chinese Simplified (PRC)';

SELECT FORMAT(@d, 'D', 'en-US') 'US English',
    FORMAT(@d, 'D', 'en-gb') 'British English',
    FORMAT(@d, 'D', 'de-de') 'German',
    FORMAT(@d, 'D', 'zh-cn') 'Chinese Simplified (PRC)';

결과 집합은 다음과 같습니다.

US English   British English  German      Simplified Chinese (PRC)
-----------  ---------------- ----------- -------------------------
8/9/2024     09/08/2024       09.08.2024  2024/8/9

US English              British English  German                    Chinese (Simplified PRC)
----------------------- ---------------- ------------------------  -------------------------
Friday, August 9, 2024  09 August 2024   Freitag, 9. August 2024   2024年8月9日

B. 사용자 지정 서식 문자열이 포함된 FORMAT

다음 예에서는 사용자 지정 서식을 지정하여 숫자 값의 서식을 지정하는 방법을 보여 줍니다. 이 예제에서는 현재 날짜가 2024년 8월 9일이라고 가정합니다. 이러한 서식과 다른 사용자 지정 서식에 대한 자세한 내용은 사용자 지정 숫자 형식 문자열을 참조하세요.

DECLARE @d DATE = GETDATE();

SELECT FORMAT(@d, 'dd/MM/yyyy', 'en-US') AS 'Date',
    FORMAT(123456789, '###-##-####') AS 'Custom Number';

결과 집합은 다음과 같습니다.

Date         Custom Number
-----------  --------------
09/08/2024   123-45-6789

C. 숫자 유형이 있는 FORMAT

다음 예제에서는 데이터베이스의 Sales.CurrencyRate 테이블에서 5개의 행을 AdventureWorks2022 반환합니다. 열 EndOfDateRate 은 테이블에 형식 으로 저장됩니다. 이 예에서는 서식이 지정되지 않은 상태로 열이 반환된 다음 .NET 숫자 형식, 일반 형식 및 통화 형식 유형 중 하나로 서식이 지정됩니다. 이러한 형식과 다른 숫자 형식에 대한 자세한 내용은 표준 숫자 형식 문자열을 참조하세요.

SELECT TOP (5) CurrencyRateID,
    EndOfDayRate,
    FORMAT(EndOfDayRate, 'N', 'en-us') AS 'Numeric 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

다음은 독일어 문화권(de-de)을 지정하는 예제입니다.

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 €

D. 시간 데이터 형식이 포함된 FORMAT

FORMAT는 이스케이프되지 않기 때문에 : . 이러한 경우에 반환 NULL 됩니다.

SELECT FORMAT(cast('07:35' AS TIME), N'hh.mm');  --> returns NULL
SELECT FORMAT(cast('07:35' AS TIME), N'hh:mm');  --> returns NULL

.:가 이스케이프되지 않으므로 Format에서 서식이 지정된 문자열을 반환합니다.

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

Format은 AM 또는 PM이 지정된 서식이 지정된 현재 시간을 반환합니다.

SELECT FORMAT(SYSDATETIME(), N'hh:mm tt');  --> returns 03:46 PM
SELECT FORMAT(SYSDATETIME(), N'hh:mm t');   --> returns 03:46 P

Format은 지정된 시간을 반환하고 AM을 표시합니다.

select FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm tt');  --> returns 01:00 AM
select FORMAT(CAST('2018-01-01 01:00' AS DATETIME2), N'hh:mm t');   --> returns 01:00 A

Format은 PM을 표시하는 지정된 시간을 반환합니다.

select FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm tt');  --> returns 02:00 PM
select FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'hh:mm t');   --> returns 02:00 P

Format은 지정된 시간을 24시간 형식으로 반환합니다.

select FORMAT(CAST('2018-01-01 14:00' AS DATETIME2), N'HH:mm');  --> returns 14:00