Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menentukan Budaya Invarian saat menggunakan FORMAT() di SQL Server

Di SQL Server, Anda dapat menggunakan FORMAT() berfungsi untuk memformat nilai tanggal/waktu dan angka sebagai string. Secara khusus, fungsi menyediakan pemformatan "sadar lokal", dan fungsi menerima argumen "budaya", yang memungkinkan Anda menentukan budaya atau bahasa yang akan digunakan untuk format sebenarnya. Misalnya, Anda dapat melewati en-us untuk memastikan hasilnya diformat dalam format bahasa Inggris AS.

Argumen budaya bersifat opsional, jadi jika Anda tidak menyediakannya, output akan ditentukan oleh bahasa sesi saat ini.

FORMAT() function menerima budaya apa pun yang didukung oleh .NET Framework sebagai argumen (Anda tidak terbatas pada bahasa yang secara eksplisit didukung oleh SQL Server).

Salah satu budaya yang didukung oleh .NET Framework adalah budaya invarian. Budaya invarian tidak peka budaya. Lebih khusus lagi, budaya ini dikaitkan dengan bahasa Inggris tetapi tidak dengan negara/wilayah mana pun.

Untuk menentukan FORMAT() harus menampilkan hasil menggunakan budaya invarian, cukup gunakan "iv" untuk argumen budaya (argumen ketiga).

Contoh 1 – Mata Uang

Berikut adalah contoh pemformatan nilai sebagai mata uang menggunakan budaya invarian.

SELECT FORMAT(123, 'C', 'iv') Result;

Hasil:

+----------+
| Result   |
|----------|
| ¤123.00  |
+----------+

Ini menghasilkan output yang memiliki bagian pecahan dengan tempat desimal. Itu juga diawali dengan tanda mata uang (¤), yang digunakan untuk menunjukkan mata uang yang tidak ditentukan (ini adalah karakter Unicode U+00A4).

Contoh 2 – Tanggal

Berikut adalah contoh pemformatan tanggal menggunakan budaya invarian bersama dengan format tanggal pendek.

DECLARE @date date = '2030-05-25';
SELECT FORMAT(@date, 'd', 'iv') Result;

Hasil:

+------------+
| Result     |
|------------|
| 05/25/2030 |
+------------+

Format tanggal pendek untuk budaya invarian adalah MM/dd/yyyy.

Ini dia lagi, tapi kali ini saya membandingkannya dengan budaya Inggris, Inggris, dan Jerman (Deutsch) AS.

DECLARE @date date = '2030-05-25';
SELECT 
  FORMAT(@date, 'd', 'iv') 'Invariant Culture',
  FORMAT(@date, 'd', 'en-us') 'US English',
  FORMAT(@date, 'd', 'en-gb') 'British',
  FORMAT(@date, 'd', 'de-de') 'German (Deutsch)';

Hasil:

+---------------------+--------------+------------+--------------------+
| Invariant Culture   | US English   | British    | German (Deutsch)   |
|---------------------+--------------+------------+--------------------|
| 05/25/2030          | 5/25/2030    | 25/05/2030 | 25.05.2030         |
+---------------------+--------------+------------+--------------------+

Contoh 3 – Semua Format Tanggal dan Waktu Standar

Ini yang lain menggunakan budaya invarian, tapi kali ini saya memformat datetimeoffset nilai menggunakan semua string format tanggal dan waktu standar yang didukung oleh .NET Framework.

DECLARE @date datetimeoffset, @culture char(2); 
SET @date = '2030-05-25 23:59:30.1234567 +07:00';
SET @culture = 'iv';
SELECT 
  FORMAT(@date, 'd', @culture) AS 'd',
  FORMAT(@date, 'D', @culture) AS 'D',
  FORMAT(@date, 'f', @culture) AS 'f',
  FORMAT(@date, 'F', @culture) AS 'F',
  FORMAT(@date, 'g', @culture) AS 'g',
  FORMAT(@date, 'G', @culture) AS 'G',
  FORMAT(@date, 'm', @culture) AS 'm',
  FORMAT(@date, 'M', @culture) AS 'M',
  FORMAT(@date, 'o', @culture) AS 'o',
  FORMAT(@date, 'O', @culture) AS 'O',
  FORMAT(@date, 'r', @culture) AS 'r',
  FORMAT(@date, 'R', @culture) AS 'R',
  FORMAT(@date, 's', @culture) AS 's',
  FORMAT(@date, 't', @culture) AS 't',
  FORMAT(@date, 'T', @culture) AS 'T',
  FORMAT(@date, 'u', @culture) AS 'u',
  FORMAT(@date, 'U', @culture) AS 'U',
  FORMAT(@date, 'y', @culture) AS 'y',
  FORMAT(@date, 'Y', @culture) AS 'Y';

Hasil (menggunakan keluaran vertikal):

d | 05/25/2030
D | Saturday, 25 May 2030
f | Saturday, 25 May 2030 23:59
F | Saturday, 25 May 2030 23:59:30
g | 05/25/2030 23:59
G | 05/25/2030 23:59:30
m | May 25
M | May 25
o | 2030-05-25T23:59:30.1234567+07:00
O | 2030-05-25T23:59:30.1234567+07:00
r | Sat, 25 May 2030 16:59:30 GMT
R | Sat, 25 May 2030 16:59:30 GMT
s | 2030-05-25T23:59:30
t | 23:59
T | 23:59:30
u | 2030-05-25 16:59:30Z
U | NULL
y | 2030 May
Y | 2030 May

Budaya Invarian Tidak Bekerja di Sistem Anda?

Jika Anda tidak dapat menjalankan budaya invarian di sistem Anda, itu mungkin karena versi .NET Framework yang lebih lama sedang diinstal. Dokumentasi untuk .NET Framework 4.8 secara eksplisit menyatakan bahwa budaya invarian tersedia menggunakan kode dua huruf ISO 639-1 "iv" .

Namun, pada pertanyaan Stack Overflow ini, jawaban dari Solomon Rutzky menunjukkan bahwa ini mungkin hanya tersedia dari .NET 4.5.

Jika Anda tidak dapat menjalankannya menggunakan versi .NET yang lebih lama, coba tingkatkan ke versi terbaru (atau versi dari minimal 4.5).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Meminta server sql tertaut

  2. Cara Memperbaiki "Server tidak dikonfigurasi untuk AKSES DATA" di SQL Server

  3. Menghitung DISTINCT pada beberapa kolom

  4. Kesalahan SQL Server - HRESULT E_FAIL telah dikembalikan dari panggilan ke komponen COM

  5. Hirarki Teknologi Memori/Penyimpanan dan SQL Server