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

Cara Menemukan Format Tanggal yang Digunakan untuk Bahasa Tertentu di SQL Server (T-SQL)

Saat bekerja dengan tanggal di SQL Server, mudah tersandung dengan format tanggal yang berbeda. Misalnya, seseorang dari AS mungkin mempertimbangkan 07/01/2018 berarti tanggal 7 Januari, tetapi seseorang dari Inggris Raya mungkin menganggapnya sebagai tanggal 1 Juli.

Dalam banyak kasus, Anda bahkan mungkin tidak tahu format tanggal mana yang digunakan untuk bahasa/budaya tertentu. Untungnya, SQL Server menyimpan informasi ini dalam database sumber dayanya, dan Anda dapat mengambilnya kembali dengan menggunakan salah satu dari dua metode di bawah ini.

Metode 1:Prosedur Tersimpan sp_helplanguage

 sp_helplanguage prosedur tersimpan menampilkan informasi tentang bahasa alternatif tertentu atau tentang semua bahasa di SQL Server. Ini termasuk nama bahasa, alias, dan format tanggal, dan nama bulan, yang terkait dengan bahasa masing-masing.

Untuk mengembalikan info untuk semua bahasa di SQL Server, jalankan perintah berikut:

EXEC sp_helplanguage;

Ini mengembalikan set hasil yang cukup besar. Berikut daftar lengkap bahasa yang saya dapatkan saat menjalankannya di SQL Server 2017.

Jika Anda tidak ingin semua bahasa dikembalikan, Anda dapat mempersempitnya ke bahasa tertentu.

Ini contohnya:

EXEC sp_helplanguage Spanish;

Berikut hasilnya ketika saya menjalankannya di mssql-cli:

-[ RECORD 1 ]-------------------------
langid      | 5
dateformat  | dmy
datefirst   | 1
upgrade     | 0
name        | Español
alias       | Spanish
months      | Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octub
shortmonths | Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic
days        | Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo
lcid        | 3082
msglangid   | 3082

Anda juga dapat menggunakan @@LANGUAGE untuk mempersempitnya menjadi apa pun bahasa Anda saat ini. Contoh:

EXEC sp_helplanguage @@LANGUAGE;

Hasil:

-[ RECORD 1 ]-------------------------
langid      | 0
dateformat  | mdy
datefirst   | 7
upgrade     | 0
name        | us_english
alias       | English
months      | January,February,March,April,May,June,July,August,September,Octobe
shortmonths | Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
days        | Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday
lcid        | 1033
msglangid   | 1033

Metode 2:Tampilan sys.syslanguages

Cara kedua untuk mengembalikan info bahasa adalah dengan langsung membuka sys.syslanguages tampilan kompatibilitas sistem. Ini adalah tampilan dari prosedur tersimpan di atas mendapatkan infonya.

Berikut cara mengkueri tampilan ini:

SELECT * FROM sys.syslanguages;

Anda juga dapat mempersempitnya menjadi bahasa dengan menambahkan WHERE klausa:

SELECT * FROM sys.syslanguages
WHERE name = 'Español';

Perhatikan bahwa setiap entri bahasa memiliki nama dan alias. Kueri di atas dapat ditulis ulang untuk menggunakan alias:

SELECT * FROM sys.syslanguages
WHERE alias = 'Spanish';

Seperti yang mungkin Anda ketahui, jauh lebih mudah menggunakan prosedur tersimpan (opsi pertama), tetapi tampilan ini dapat berguna jika Anda hanya ingin sebagian kolom dikembalikan.

Misalnya:

SELECT 
    name,
    alias,
    dateformat 
FROM sys.syslanguages
WHERE alias = 'Spanish';

Hasil:

+---------+---------+--------------+
| name    | alias   | dateformat   |
|---------+---------+--------------|
| Español | Spanish | dmy          |
+---------+---------+--------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan sistem operasi SQL Server 5:5 (Akses ditolak.)

  2. Cara update dan order menggunakan ms sql

  3. Bagaimana cara menghasilkan id unik secara otomatis dalam SQL seperti UID12345678?

  4. Cara membagi nilai yang dipisahkan koma ke kolom

  5. Apa tipe data SYSNAME di SQL Server?