Bagikan melalui


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.

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 .

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

FORMATNULL 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 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)
-----------  ---------------- ----------- -------------------------
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 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
-----------  --------------
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 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

FORMATNULL 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