Trong MariaDB, STR_TO_DATE()
là một hàm ngày và giờ được tích hợp sẵn trả về giá trị ngày giờ, dựa trên chuỗi ngày tháng và chuỗi định dạng đã cho.
STR_TO_DATE()
hàm là nghịch đảo của DATE_FORMAT()
chức năng.
Cú pháp
Cú pháp như sau:
STR_TO_DATE(str,format)
Ở đâu str
là chuỗi ngày và định dạng format
là một chuỗi định dạng chỉ định định dạng của chuỗi ngày.
Ví dụ
Đây là một ví dụ:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Kết quả:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
Chuỗi định dạng bao gồm một số từ định dạng cho MariaDB biết ngày trong đối số đầu tiên được định dạng như thế nào. Xem Chuỗi định dạng MariaDB để biết danh sách các mã định dạng có thể được sử dụng trong chuỗi định dạng.
Trong ví dụ này, kết quả là giá trị ngày tháng, vì chuỗi định dạng chỉ chứa các phần ngày tháng.
Trả lại giá trị ngày giờ
Dưới đây là một ví dụ trả về giá trị ngày giờ:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Kết quả:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
Trong ví dụ này, phần thời gian đã được thêm vào, mặc dù đối số đầu tiên không chứa phần thời gian.
Dưới đây là một ví dụ khác bao gồm một phần thời gian trong đối số đầu tiên:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Kết quả:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
Đây là một cái khác, trong đó chuỗi ngày sử dụng giá trị thời gian lỏng hơn:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Kết quả:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Trả lại giá trị thời gian
Ở đây, chúng tôi thay đổi chuỗi định dạng để chỉ trả về giá trị thời gian:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Kết quả:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
Chuỗi ngày / giờ không hợp lệ
Chuyển một chuỗi ngày không hợp lệ trả về null
với một cảnh báo.
Ví dụ:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Kết quả:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Hãy xem cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Thiếu đối số
Đang gọi STR_TO_DATE()
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 STR_TO_DATE();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
Và một ví dụ khác:
SELECT STR_TO_DATE('Friday, 28 May 2021');
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'