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

Trích xuất tháng-năm (mm-yyyy) từ chuỗi ngày 'dd-mm-yyyy' trong MySQL

Vấn đề: Chuyển đổi định dạng ngày từ chuỗi 'dd-mm-yyyy' sang 'mm-yyyy'

Cột ShippingDate kiểu VARCHAR lưu như '10-11-2017'. Cần trích xuất tháng-năm dạng '11-2017'.

Giải pháp: STR_TO_DATE + DATE_FORMAT

Chuỗi → DATE (STR_TO_DATE) → Chuỗi định dạng mới (DATE_FORMAT).

1. Tạo bảng và dữ liệu

CREATE TABLE DemoTable (ShippingDate VARCHAR(40));
INSERT INTO DemoTable VALUES
('10-11-2017'), ('31-01-2019'), ('02-02-2018'), ('10-06-2013');

2. Truy vấn chuyển đổi

SELECT DATE_FORMAT(STR_TO_DATE(ShippingDate, '%d-%m-%Y'), '%m-%Y') 
FROM DemoTable;

3. Kết quả

+-----------------------------------------------------------+
| DATE_FORMAT(STR_TO_DATE(ShippingDate,'%d-%m-%Y'),'%m-%Y')  |
+-----------------------------------------------------------+
| 11-2017                                                   |
| 01-2019                                                   |
| 02-2018                                                   |
| 06-2013                                                   |
+-----------------------------------------------------------+

Giải thích format

SpecifierÝ nghĩaVí dụ
%dNgày (01-31)10, 31, 02
%mTháng (01-12)11, 01, 02, 06
%YNăm (4 chữ số)2017, 2019, 2018, 2013
%m-%YTháng-Năm11-2017, 01-2019...

Lưu ý quan trọng

  • Format trong STR_TO_DATE phải khớp chính xác dữ liệu (dấu -, thứ tự d/m/Y). Sai format → trả NULL.
  • Nên lưu ngày đúng kiểu DATE/DATETIME thay vì VARCHAR – dễ truy vấn, index, tính toán.
  • MySQL 8.0+ có thể dùng CAST(ShippingDate AS DATE) nếu format chuẩn ISO (YYYY-MM-DD).

Mở rộng: Hiển thị kèm các cột khác

SELECT *, DATE_FORMAT(STR_TO_DATE(ShippingDate, '%d-%m-%Y'), '%m-%Y') AS MonthYear
FROM DemoTable;