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

Chuyển đổi ngày tháng định dạng UK sang MySQL DATE?

Chuyển đổi định dạng ngày UK (dd/mm/yyyy) sang MySQL DATE

Định dạng UK: Ngày/Tháng/Năm (ví dụ: 31/01/2016). MySQL chuẩn lưu YYYY-MM-DD. Dùng STR_TO_DATE() với pattern '%d/%m/%Y' để chuyển đổi.

Cú pháp

STR_TO_DATE(ten_cot, '%d/%m/%Y')

Ví dụ minh họa

Tạo bảng DemoTable728:

mysql> CREATE TABLE DemoTable728 (DueDate VARCHAR(100));
Query OK, 0 rows affected (0.59 sec)

Chèn dữ liệu (định dạng UK):

mysql> INSERT INTO DemoTable728 VALUES('10/11/2019');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable728 VALUES('31/01/2016');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable728 VALUES('01/12/2015');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable728 VALUES('11/03/2018');
Query OK, 1 row affected (0.16 sec)

Xem dữ liệu gốc:

mysql> SELECT * FROM DemoTable728;
+------------+
| DueDate    |
+------------+
| 10/11/2019 |
| 31/01/2016 |
| 01/12/2015 |
| 11/03/2018 |
+------------+
4 rows in set (0.00 sec)

Chuyển đổi sang DATE chuẩn MySQL (YYYY-MM-DD):

mysql> SELECT STR_TO_DATE(DueDate, '%d/%m/%Y') FROM DemoTable728;

Kết quả:

+---------------------------------+
| STR_TO_DATE(DueDate, '%d/%m/%Y') |
+---------------------------------+
| 2019-11-10                      |
| 2016-01-31                      |
| 2015-12-01                      |
| 2018-03-11                      |
+---------------------------------+
4 rows in set (0.00 sec)

Giải thích Pattern '%d/%m/%Y'

Ký tựÝ nghĩaVí dụ input
%dNgày (01-31, có đệm 0)10, 31, 01, 11
/Ký tự phân cách cố định/
%mTháng (01-12, có đệm 0)11, 01, 12, 03
/Ký tự phân cách cố định/
%YNăm 4 chữ số2019, 2016, 2015, 2018

Các định dạng quốc tế phổ biến

Quốc gia/VùngĐịnh dạngPattern STR_TO_DATE
UK, VN, AU, EUdd/mm/yyyy'%d/%m/%Y'
USmm/dd/yyyy'%m/%d/%Y'
ISO/Chuẩn quốc tếyyyy-mm-dd'%Y-%m-%d'
Định dạng có dấu chấmdd.mm.yyyy'%d.%m.%Y'
Có giờ (24h)dd/mm/yyyy HH:MM:SS'%d/%m/%Y %H:%i:%s'

Ứng dụng: Chuyển đổi vĩnh viễn cột VARCHAR sang DATE

-- 1. Thêm cột DATE mới
ALTER TABLE DemoTable728 ADD COLUMN DueDateParsed DATE;

-- 2. Cập nhật dữ liệu
UPDATE DemoTable728 SET DueDateParsed = STR_TO_DATE(DueDate, '%d/%m/%Y');

-- 3. (Tùy chọn) Xóa cột VARCHAR cũ, đổi tên cột mới
-- ALTER TABLE DemoTable728 DROP COLUMN DueDate, CHANGE DueDateParsed DueDate DATE;