Kết hợp STR_TO_DATE (parse chuỗi thành DATE) và DATE_FORMAT (định dạng DATE thành chuỗi) để chuyển đổi.
Cú pháp
SELECT DATE_FORMAT(STR_TO_DATE(cotNgay, '%Y%m%d'), '%Y-%m-%d') FROM tenBang;
Ví dụ
Tạo bảng cột varchar chứa ngày dạng YYYYMMDD:
mysql> create table DemoTable (
ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientProjectDeadline varchar(200)
);
Query OK, 0 rows affected (0.57 sec)Dữ liệu: 20121221, 20190416, 20160624, 20170131
Chuyển đổi
mysql> select date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') from DemoTable;
+----------------------------------------------------------------------+ | date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'),'%Y-%m-%d') | +----------------------------------------------------------------------+ | 2012-12-21 | | 2019-04-16 | | 2016-06-24 | | 2017-01-31 | +----------------------------------------------------------------------+
Các format phổ biến:
%Y- năm 4 chữ số%m- tháng 2 chữ số%d- ngày 2 chữ số%y- năm 2 chữ số
MySQL 8.0+: Có thể dùng CAST('20190416' AS DATE) trực tiếp nếu chuỗi đúng chuẩn ISO.