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.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk