Trong MariaDB, DATE_FORMAT()
là một hàm ngày và giờ được tích hợp sẵn để định dạng ngày theo chuỗi định dạng đã cho.
Nó yêu cầu hai đối số; ngày tháng và chuỗi định dạng. Nó cũng chấp nhận đối số thứ ba tùy chọn cho phép bạn chỉ định ngôn ngữ.
Cú pháp
Cú pháp như sau:
DATE_FORMAT(date, format[, locale])
Nơi date
là ngày, định dạng format
là chuỗi định dạng (xem các chỉ định định dạng được chấp nhận) và locale
là ngôn ngữ tùy chọn để sử dụng cho định dạng trả về.
Ví dụ
Đây là một ví dụ:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Kết quả:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Đây là một lần nữa, nhưng lần này sử dụng %r
để trả về thời gian được trả về ở định dạng 12 giờ:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Kết quả:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
Chúng ta có thể kết hợp chúng để có ngày giờ:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Kết quả:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
Ngôn ngữ cho tên tháng, tên ngày, v.v. được xác định bởi lc_time_names
biến hệ thống. Giá trị mặc định luôn là en_US
bất kể cài đặt ngôn ngữ của hệ thống. Đây là cách xem cài đặt hiện tại của bạn.
Đối số ngôn ngữ
Bắt đầu với MariaDB 10.3.2, đối số thứ ba tùy chọn có thể được sử dụng để chỉ định ngôn ngữ. Khi điều này được chỉ định, nó làm cho chức năng độc lập với cài đặt phiên.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Kết quả:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Dưới đây là một số ngôn ngữ khác:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;
Kết quả:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
Trong trường hợp này, lịch cuối cùng là tiếng Thái và mặc dù nó sử dụng các ký tự tiếng Thái cho tên tháng và tên ngày, nhưng nó không thay đổi năm thành lịch Thái Lan. Năm 2030 sẽ là năm 2573 khi sử dụng lịch Thái Lan. Vì vậy, tôi đoán giả định là nếu bạn muốn sử dụng năm Thái Lan, thì ngày bạn vượt qua sẽ sử dụng năm Thái Lan.
Ngày hiện tại
Tại đây, chúng tôi chuyển NOW()
làm đối số ngày để định dạng ngày hiện tại:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Kết quả:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Đối số không hợp lệ
Khi được truyền bất kỳ đối số không hợp lệ nào, DATE_FORMAT()
trả về null
:
SELECT DATE_FORMAT('Homer', 'Simpson');
Kết quả:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Thiếu đối số
Đang gọi DATE_FORMAT()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:
SELECT DATE_FORMAT();
Kết quả:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Và một ví dụ khác:
SELECT DATE_FORMAT('2030-05-21');
Kết quả:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
GET_FORMAT()
Chức năng
Bạn cũng có thể sử dụng GET_FORMAT()
trong đối số thứ hai thành DATE_FORMAT()
. Điều này trả về chuỗi định dạng đầy đủ cho một định dạng ngày nhất định, giúp bạn không phải nhớ chuỗi định dạng để sử dụng.