Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách dễ nhất chèn bản ghi ngày tháng trong MySQL

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ạngVí dụPattern
Tháng năm viết tắtJan 2018%b %Y
Ngày tháng năm02 Jan 2018%d %b %Y
ISO standard2018-01-02%Y-%m-%d
Việt Nam02/01/2018%d/%m/%Y