Chuyển đổi chuỗi tháng năm (VD: 'Jan 2018') thành DATE với STR_TO_DATE
Hàm STR_TO_DATE(chuoi, dinh_dang) phân tích chuỗi theo định dạng chỉ định, trả về DATE.
Tạo bảng và dữ liệu
mysql> create table DemoTable ( JoiningYear varchar(20) ); Query OK, 0 rows affected (0.69 sec)
mysql> insert into DemoTable values('Jan 2018');
mysql> insert into DemoTable values('May 2107');
mysql> insert into DemoTable values('Aug 2019');
mysql> insert into DemoTable values('Oct 2020');
Truy vấn chuyển đổi
mysql> select str_to_date(JoiningYear, '%b %Y') from DemoTable;
Kết quả
+----------------------------------+ | str_to_date(JoiningYear, '%b %Y') | +----------------------------------+ | 2018-01-00 | | 2107-05-00 | | 2019-08-00 | | 2020-10-00 | +----------------------------------+
⚠️ Vấn đề: Ngày thành '00' (ngày 0 không hợp lệ)
Định dạng %b %Y chỉ có tháng và năm. MySQL trả về ngày = 0.
Sửa: Thêm ngày vào chuỗi hoặc dùng DAY=1
-- Cách 1: Giả định ngày 1
SELECT STR_TO_DATE(CONCAT('01 ', JoiningYear), '%d %b %Y') FROM DemoTable;
-- Cách 2: Nếu dữ liệu đã có ngày (VD: '02 Jan 2018')
SELECT STR_TO_DATE(JoiningYear, '%d %b %Y') FROM DemoTable;
Các định dạng phổ biến:
| Định dạng | Ví dụ | Pattern |
|---|---|---|
| Tháng năm viết tắt | Jan 2018 | %b %Y |
| Ngày tháng năm | 02 Jan 2018 | %d %b %Y |
| ISO standard | 2018-01-02 | %Y-%m-%d |
| Việt Nam | 02/01/2018 | %d/%m/%Y |