Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Mengatur Lokal untuk Koneksi Saat Ini di MySQL

Ada fungsi tanggal tertentu di MySQL yang mengembalikan nama hari atau nama bulan. Secara khusus, saya mengacu pada DATE_FORMAT() , DAYNAME() , dan MONTHNAME() fungsi. Ini mungkin mengembalikan nilai katakanlah, November , atau Senin , tergantung pada kueri yang digunakan. Tetapi hasilnya dapat dengan mudah dikembalikan dalam bahasa yang berbeda jika diperlukan.

Bahasa yang digunakan fungsi-fungsi ini untuk nilai kembaliannya berasal dari lc_time_names variabel sistem. Anda dapat melihat nilai variabel ini atau mengatur SESSION nilai sehingga hasil dari fungsi-fungsi ini dalam bahasa/lokal yang diinginkan.

Nama lokal memiliki subtag bahasa dan wilayah yang terdaftar oleh Internet Assigned Numbers Authority (IANA). Contohnya termasuk en_US untuk Bahasa Inggris – Amerika Serikat , en_NZ untuk Bahasa Inggris – Selandia Baru , atau es_PA untuk Spanyol – Panama , dll (untuk daftar lokal yang didukung oleh MySQL, lihat Daftar Lengkap Lokal di MySQL).

Dalam artikel ini, saya akan menunjukkan cara menemukan lokal saat ini untuk koneksi Anda, mengubahnya, lalu melihat bagaimana pengaruhnya terhadap hasil kueri. Saya juga menunjukkan kepada Anda fungsi yang kebal terhadap pengaturan ini (tapi jangan khawatir, fungsi ini memungkinkan Anda menentukan lokal).

Lihat Lokal Saat Ini

Pertama, mari kita lihat apa nilai saat ini dari lc_time_names variabel sistem.

PILIH @@lc_time_names;

Hasil:

+-----------------+| @@lc_time_names |+-----------------+| en_US |+-----------------+

Jadi lokal saya saat ini adalah en_US . Ini sebenarnya adalah nilai default terlepas dari setelan lokal sistem Anda (tetapi ini dapat diubah saat server mulai atau dengan menyetel GLOBAL nilai).

Ubah Lokal

Sekarang mari kita ubah lokal dan lihat hasilnya.

SET lc_time_names ='de_BE';SELECT @@lc_time_names;

Hasil:

+-----------------+| @@lc_time_names |+-----------------+| de_BE |+------------------+

Dalam hal ini, saya mengubah lokal menjadi de_BE , yaitu untuk Jerman – Belgia .

Contoh Penggunaan

Berikut adalah contoh di mana saya mengatur lokal, lalu menjalankan kueri yang mengembalikan nama bulan. Saya kemudian menyetel lokal ke nilai yang berbeda, lalu menjalankan kueri yang sama lagi.

Lokal Pertama:Inggris – Amerika Serikat

SET lc_time_names ='en_US';SELECT MONTHNAME('1999-10-03');

Hasil:

+-------------------------+| NAMA BULAN('1999-10-03') |+-------------------------+| Oktober |+-------------------------+

Lokal ke-2:Spanyol – Spanyol

SET lc_time_names ='es_ES';SELECT MONTHNAME('1999-10-03');

Hasil:

+-------------------------+| NAMA BULAN('1999-10-03') |+-------------------------+| oktubre |+--------------+

Fungsi FORMAT()

Nilai lc_time_names tidak mempengaruhi FORMAT() fungsi, tetapi fungsi ini menerima argumen ke-3 yang memungkinkan Anda menentukan lokal. Ini contoh yang saya maksud.

SET lc_time_names ='de_DE';SELECT FORMAT(1234, 0), FORMAT(1234, 0, 'de_DE');

Hasil:

+-----------------+--------------------------+| FORMAT (1234, 0) | FORMAT (1234, 0, 'de_DE') |+-----------------+-------------------- ------+| 1,234 | 1.234 |+-----------------+--------------------------+ 

Jadi meskipun saya mengatur lc_time_names ke de_DE pertama, panggilan awal ke FORMAT() mengabaikan itu. Ketika saya memanggil fungsi untuk kedua kalinya, saya secara eksplisit menetapkan bahasa/lokal yang sama dengan argumen ke-3, dan itu berhasil.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL CREATE DATABASE Syntax – Didaftarkan oleh DBMS

  2. Bisakah Aplikasi Android terhubung langsung ke database mysql online

  3. Bagaimana cara memilih hanya tanggal dari bidang DATETIME di MySQL?

  4. JSON_DEPTH() – Temukan Kedalaman Maksimum Dokumen JSON di MySQL

  5. Menggunakan Pernyataan IF dalam kueri MySQL SELECT