Trong MariaDB, TO_CHAR()
là một hàm chuỗi tích hợp để chuyển đổi một biểu thức ngày / giờ thành một chuỗi.
Biểu thức có thể là giá trị ngày tháng, ngày tháng năm, thời gian hoặc dấu thời gian.
Chức năng này đã được giới thiệu trong MariaDB 10.6.1 để nâng cao khả năng tương thích với Oracle.
Cú pháp
Cú pháp như sau:
TO_CHAR(expr[, fmt])
Ở đâu expr
là giá trị ngày, giờ, giờ hoặc dấu thời gian và fmt
là một chuỗi định dạng tùy chọn chỉ định cách định dạng đầu ra.
Chuỗi định dạng có thể là bất kỳ chuỗi nào sau đây:
-
YYYY
-
YYY
-
YY
-
RRRR
-
RR
-
MM
-
MON
-
MONTH
-
MI
-
DD
-
DY
-
HH
-
HH12
-
HH24
-
SS
- Các ký tự đặc biệt
Giá trị mặc định là YYYY-MM-DD HH24:MI:SS
.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT TO_CHAR('2020-01-01');
Kết quả:
+-----------------------+ | TO_CHAR('2020-01-01') | +-----------------------+ | 2020-01-01 00:00:00 | +-----------------------+
Chuyển giá trị ngày giờ
Ví dụ này sử dụng giá trị ngày giờ:
SELECT TO_CHAR('2022-12-25 10:30:45');
Kết quả:
+--------------------------------+ | TO_CHAR('2022-12-25 10:30:45') | +--------------------------------+ | 2022-12-25 10:30:45 | +--------------------------------+
Chỉ định một chuỗi định dạng
Dưới đây là một ví dụ với chuỗi định dạng:
SELECT TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD');
Kết quả:
+----------------------------------------------+ | TO_CHAR('2022-12-25 10:30:45', 'YYYY-MM-DD') | +----------------------------------------------+ | 2022-12-25 | +----------------------------------------------+
Đây là một cái khác:
SELECT TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY');
Kết quả:
+--------------------------------------------+ | TO_CHAR('2022-12-25', 'DY, DD MONTH YYYY') | +--------------------------------------------+ | Sun, 25 December 2022 | +--------------------------------------------+
Số ngày
Đây là những gì sẽ xảy ra khi tôi cung cấp một ngày dạng số:
SELECT TO_CHAR(20200101);
Kết quả:
ERROR 3047 (HY000): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.
Ngày không hợp lệ
Nếu ngày không hợp lệ, TO_CHAR()
trả về null
với một cảnh báo:
SELECT TO_CHAR('2020-01-51');
Kết quả:
+-----------------------+ | TO_CHAR('2020-01-51') | +-----------------------+ | NULL | +-----------------------+ 1 row in set, 1 warning (0.001 sec)
Hãy kiểm tra cảnh báo:
SHOW WARNINGS;
Kết quả:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2020-01-51' | +---------+------+----------------------------------------+
Chuỗi định dạng không hợp lệ
Nếu chuỗi định dạng không hợp lệ, TO_CHAR()
trả về một lỗi:
SELECT TO_CHAR('2020-01-01', 'wow');
Kết quả:
ERROR 3047 (HY000): Invalid argument error: date format not recognized at wow in function to_char.
Chuỗi định dạng rỗng
TO_CHAR()
trả về null
nếu chuỗi định dạng là null
:
SELECT TO_CHAR('2020-01-01', null);
Kết quả:
+-----------------------------+ | TO_CHAR('2020-01-01', null) | +-----------------------------+ | NULL | +-----------------------------+
Số lượng đối số không hợp lệ
Việc chuyển một số lượng đối số không hợp lệ (hoặc không có đối số) dẫn đến lỗi:
SELECT TO_CHAR();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'TO_CHAR'