Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách đặt ngôn ngữ cho kết nối hiện tại trong MySQL

Có một số hàm ngày trong MySQL trả về tên ngày hoặc tên tháng. Đặc biệt, tôi đang đề cập đến DATE_FORMAT() , DAYNAME()MONTHNAME() chức năng. Các giá trị này có thể trả về giá trị là Tháng 11 hoặc Thứ Hai , tùy thuộc vào truy vấn đang được sử dụng. Nhưng kết quả cũng có thể dễ dàng được trả về bằng một ngôn ngữ khác nếu được yêu cầu.

Ngôn ngữ mà các hàm này sử dụng cho giá trị trả về của chúng được lấy từ lc_time_names biến hệ thống. Bạn có thể xem giá trị của biến này hoặc đặt SESSION của nó giá trị để kết quả của các hàm này ở ngôn ngữ / địa phương mong muốn.

Tên ngôn ngữ có các thẻ phụ của ngôn ngữ và khu vực được liệt kê bởi Cơ quan cấp số lượng được ấn định trên Internet (IANA). Các ví dụ bao gồm en_US cho tiếng Anh - Hoa Kỳ , en_NZ cho tiếng Anh - New Zealand hoặc es_PA cho Tiếng Tây Ban Nha - Panama , v.v. (để biết danh sách các ngôn ngữ được MySQL hỗ trợ, hãy xem Danh sách đầy đủ các ngôn ngữ trong MySQL).

Trong bài viết này, tôi sẽ chỉ cho bạn cách tìm ngôn ngữ hiện tại cho kết nối của bạn, thay đổi ngôn ngữ đó và sau đó xem nó ảnh hưởng như thế nào đến kết quả của một truy vấn. Tôi cũng chỉ cho bạn một chức năng miễn nhiễm với cài đặt này (nhưng đừng lo, chức năng này cho phép bạn chỉ định ngôn ngữ).

Xem ngôn ngữ hiện tại

Trước tiên, hãy xem giá trị hiện tại của lc_time_names biến hệ thống.

 CHỌN @@ lc_time_names; 

Kết quả:

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

Vì vậy, ngôn ngữ hiện tại của tôi là en_US . Đây thực sự là giá trị mặc định bất kể cài đặt ngôn ngữ của hệ thống của bạn là gì (nhưng có thể thay đổi giá trị này khi khởi động máy chủ hoặc bằng cách thiết lập GLOBAL giá trị).

Thay đổi ngôn ngữ

Bây giờ chúng ta hãy thay đổi ngôn ngữ và xem kết quả.

 SET lc_time_names ='de_BE'; CHỌN @@ lc_time_names; 

Kết quả:

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

Trong trường hợp này, tôi đã thay đổi ngôn ngữ thành de_BE , dành cho Đức - Bỉ .

Ví dụ về cách sử dụng

Đây là một ví dụ mà tôi đặt ngôn ngữ, sau đó chạy truy vấn trả về tên tháng. Sau đó, tôi đặt ngôn ngữ thành một giá trị khác, rồi chạy lại cùng một truy vấn.

Ngôn ngữ thứ nhất:Tiếng Anh - Hoa Kỳ

 SET lc_time_names ='en_US'; CHỌN MONTHNAME ('1999-10-03'); 

Kết quả:

 + ------------------------- + | MONTHNAME ('1999-10-03') | + ------------------------- + | Tháng 10 | + ------------------------- + 

Ngôn ngữ thứ 2:Tây Ban Nha - Tây Ban Nha

 SET lc_time_names ='es_ES'; CHỌN MONTHNAME ('1999-10-03'); 

Kết quả:

 + ------------------------- + | MONTHNAME ('1999-10-03') | + ------------------------- + | octubre | + ------------------------- + 

Hàm FORMAT ()

Giá trị của lc_time_names không ảnh hưởng đến FORMAT() nhưng hàm này chấp nhận đối số thứ 3 cho phép bạn chỉ định ngôn ngữ. Đây là một ví dụ về ý tôi muốn nói.

 SET lc_time_names ='de_DE'; CHỌN ĐỊNH DẠNG (1234, 0), ĐỊNH DẠNG (1234, 0, 'de_DE'); 

Kết quả:

 + ----------------- + -------------------------- + | ĐỊNH DẠNG (1234, 0) | ĐỊNH DẠNG (1234, 0, 'de_DE') | + ----------------- + -------------------- ------ + | 1,234 | 1.234 | + ----------------- + -------------------------- +  

Vì vậy, mặc dù tôi đã đặt lc_time_names thành de_DE đầu tiên, lệnh gọi đầu tiên tới FORMAT() bỏ qua điều đó. Khi tôi gọi hàm lần thứ hai, tôi đã chỉ định rõ ràng cùng ngôn ngữ / miền địa phương đó làm đối số thứ 3 và nó đã hoạt động.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về ASCII () - MySQL

  2. Không thể kết nối với MySQL từ Java:NullPointerException bên trong logic kết nối trình điều khiển MySQL

  3. MySQL DROP CONSTRAINT DUY NHẤT

  4. Cách cài đặt Adminer trên ứng dụng riêng của nó

  5. MySQL dynamic-pivot