FORMAT (T-SQL)
Berlaku untuk: Titik akhir analitik SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Mengembalikan nilai yang diformat dengan format dan budaya opsional yang ditentukan. FORMAT
Gunakan fungsi untuk pemformatan nilai tanggal/waktu dan angka yang sadar lokal sebagai string. Untuk konversi jenis data umum, gunakan CAST
atau CONVERT
.
Sintaks
FORMAT( value , format [ , culture ] )
Argumen
value
Ekspresi tipe data yang didukung untuk diformat. Untuk daftar jenis yang valid, lihat tabel di bagian Keterangan .
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. Untuk informasi selengkapnya, lihat 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 SET LANGUAGE
pernyataan . 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
menimbulkan kesalahan.
Jenis yang dikembalikan
nvarchar atau null
Panjang nilai pengembalian ditentukan oleh format .
Keterangan
FORMAT
NULL
mengembalikan kesalahan selain budaya yang tidak valid. Misalnya, NULL
dikembalikan jika nilai yang ditentukan dalam format tidak valid.
Fungsi FORMAT
ini 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 | kecil | Byte |
Numerik | desimal | SqlDecimal |
Numerik | numerik | SqlDecimal |
Numerik | float | Double |
Numerik | real | Single |
Numerik | smallmoney | Decimal |
Numerik | uang | Decimal |
Tanggal dan Waktu | date | DateTime |
Tanggal dan Waktu | time | TimeSpan |
Tanggal dan Waktu | datetime | DateTime |
Tanggal dan Waktu | smalldatetime | DateTime |
Tanggal dan Waktu | datetime2 | DateTime |
Tanggal dan Waktu | datetimeoffset | DateTimeOffset |
Contoh
J. Contoh FORMAT Sederhana
Contoh berikut mengembalikan tanggal sederhana yang diformat untuk budaya yang berbeda.
DECLARE @d AS DATE = '11/22/2020';
SELECT FORMAT(@d, 'd', 'en-US') AS 'US English',
FORMAT(@d, 'd', 'en-gb') AS 'British English',
FORMAT(@d, 'd', 'de-de') AS 'German',
FORMAT(@d, 'd', 'zh-cn') AS 'Chinese Simplified (PRC)';
SELECT FORMAT(@d, 'D', 'en-US') AS 'US English',
FORMAT(@d, 'D', 'en-gb') AS 'British English',
FORMAT(@d, 'D', 'de-de') AS 'German',
FORMAT(@d, 'D', 'zh-cn') AS 'Chinese Simplified (PRC)';
Berikut set hasilnya.
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 dengan string pemformatan kustom
Contoh berikut menunjukkan pemformatan nilai numerik dengan menentukan format kustom. Contohnya mengasumsikan bahwa tanggal saat ini adalah 9 Agustus 2024. Untuk informasi selengkapnya tentang ini dan format kustom lainnya, lihat String Format Numerik Kustom.
DECLARE @d AS DATE = GETDATE();
SELECT FORMAT(@d, 'dd/MM/yyyy', 'en-US') AS 'Date',
FORMAT(123456789, '###-##-####') AS 'Custom Number';
Berikut set hasilnya.
Date Custom Number
----------- --------------
09/08/2024 123-45-6789
C. FORMAT dengan jenis numerik
Contoh berikut mengembalikan lima baris dari Sales.CurrencyRate
tabel dalam AdventureWorks2022
database. 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 set hasilnya.
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
NULL
mengembalikan 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