FORMAT (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analyticstitik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Mengembalikan nilai yang diformat dengan format dan budaya opsional yang ditentukan. Gunakan fungsi FORMAT untuk pemformatan nilai tanggal/waktu dan angka yang sadar lokal sebagai string. Untuk konversi jenis data umum, gunakan CAST atau CONVERT.

Konvensi sintaks transact-SQL

Sintaksis

FORMAT( value, format [, culture ] )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

value
Ekspresi tipe data yang didukung untuk diformat. Untuk daftar jenis yang valid, lihat tabel di bagian Keterangan berikut ini.

format
pola format nvarchar .

Argumen format harus berisi string format .NET Framework yang valid, baik sebagai string format standar (misalnya, "C" atau "D"), atau sebagai pola karakter kustom untuk tanggal dan nilai numerik (misalnya, "MMMM DD, yyyy (dddd)"). Pemformatan komposit tidak didukung. Untuk penjelasan lengkap tentang pola pemformatan ini, lihat dokumentasi .NET Framework tentang pemformatan string secara umum, format tanggal dan waktu kustom, dan format angka kustom. Titik awal yang baik adalah topik, "Jenis Pemformatan."

budaya
Argumen nvarchar opsional yang menentukan budaya.

Jika argumen budaya tidak disediakan, bahasa sesi saat ini digunakan. Bahasa ini diatur secara implisit, atau eksplisit dengan menggunakan pernyataan SET LANGUAGE. budaya menerima budaya apa pun yang didukung oleh .NET Framework sebagai argumen; tidak terbatas pada bahasa yang didukung secara eksplisit oleh SQL Server. Jika argumen budaya tidak valid, FORMAT akan menimbulkan kesalahan.

Jenis Kembalian

nvarchar atau null

Panjang nilai pengembalian ditentukan oleh format .

Keterangan

FORMAT mengembalikan NULL untuk kesalahan selain budaya yang tidak valid. Misalnya, NULL dikembalikan jika nilai yang ditentukan dalam format tidak valid.

Fungsi FORMAT bersifat nondeterministik.

FORMAT bergantung pada keberadaan .NET Framework Common Language Runtime (CLR).

Fungsi ini tidak dapat di-remote karena tergantung pada keberadaan CLR. Remoting fungsi yang memerlukan CLR, dapat menyebabkan kesalahan pada server jarak jauh.

FORMAT bergantung pada aturan pemformatan CLR, yang menentukan bahwa titik dua dan titik harus diloloskan. Oleh karena itu, ketika string format (parameter kedua) berisi titik dua atau titik, titik dua atau titik harus diloloskan dengan garis miring terbalik ketika nilai input (parameter pertama) adalah jenis data waktu . Lihat D. FORMAT dengan jenis data waktu.

Tabel berikut mencantumkan jenis data yang dapat diterima untuk argumen nilai bersama dengan jenis pemetaan .NET Framework yang setara.

Kategori Jenis Jenis .NET
Numerik bigint Int64
Numerik int Int32
Numerik smallint Int16
Numerik tinyint Byte
Numerik desimal SqlDecimal
Numerik numeric SqlDecimal
Numerik float Laju
Numerik real Tunggal
Numerik smallmoney Desimal
Numerik money Desimal
Tanggal dan Waktu date WaktuTanggal
Tanggal dan Waktu waktu TimeSpan
Tanggal dan Waktu datetime WaktuTanggal
Tanggal dan Waktu smalldatetime WaktuTanggal
Tanggal dan Waktu tanggalwaktu2 WaktuTanggal
Tanggal dan Waktu tanggalwaktulewat DateTimeOffset

Contoh

J. Contoh FORMAT Sederhana

Contoh berikut mengembalikan tanggal sederhana yang diformat untuk budaya yang berbeda.

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)';  

Berikut adalah hasil yang ditetapkan.

US English  British English       German     Simplified Chinese (PRC)  
----------  --------------------- ---------- ------------------------  
11/22/2020  22/11/2020            22.11.2020 2020/11/22 
  
US English                  British English        German                      Chinese (Simplified PRC)  
--------------------------- ---------------------- --------------------------  ---------------------------------------  
Sunday, November 22, 2020   22 November 2020       Sonntag, 22. November 2020  2020年11月22日  
  

B. FORMAT dengan string pemformatan kustom

Contoh berikut menunjukkan pemformatan nilai numerik dengan menentukan format kustom. Contohnya mengasumsikan bahwa tanggal saat ini adalah 22 November 2020. Untuk informasi selengkapnya tentang ini dan format kustom lainnya, lihat String Format Numerik Kustom.

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

Berikut adalah hasil yang ditetapkan.

Date        Custom Number  
----------  -------------  
22/11/2020  123-45-6789  
  

C. FORMAT dengan jenis numerik

Contoh berikut mengembalikan 5 baris dari tabel Sales.CurrencyRate dalam database AdventureWorks2022. Kolom EndOfDateRate disimpan sebagai jenis uang dalam tabel. Dalam contoh ini, kolom dikembalikan tidak diformat lalu diformat dengan menentukan format .NET Number, Format umum, dan jenis format Mata Uang. Untuk informasi selengkapnya tentang ini dan format numerik lainnya, lihat String Format Numerik Standar.

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;  

Berikut adalah hasil yang ditetapkan.

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  
  

Contoh ini menentukan budaya Jerman (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 dengan jenis data waktu

FORMAT mengembalikan NULL dalam kasus ini karena . dan : tidak lolos.

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 mengembalikan string yang diformat . karena dan : lolos.

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 mengembalikan waktu saat ini yang diformat dengan AM atau PM yang ditentukan

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

Format mengembalikan waktu yang ditentukan, menampilkan 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 mengembalikan waktu yang ditentukan, menampilkan 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 mengembalikan waktu yang ditentukan dalam format 24 jam

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

Lihat Juga