Đây là hướng dẫn ngắn về cách lấy năm và tháng từ cột ngày trong MySQL. Để làm điều này, chúng tôi sẽ sử dụng chức năng EXTRACT, cho phép chúng tôi trích xuất các phần của một ngày
Dưới đây, bạn sẽ tìm thấy ảnh chụp màn hình của bảng MySQL có tên là “thành viên“
Như bạn có thể thấy, bảng có ba cột
- Id khóa chính
- Tên của thành viên
- Một cột ngày được gọi là date_registered
Giả sử chúng ta muốn đếm xem có bao nhiêu thành viên đã đăng ký và nhóm họ theo năm và tháng mà họ đã đăng ký?
SELECT EXTRACT[YEAR_MONTH FROM date_registered] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered
Các bạn chạy câu truy vấn SQL trên sẽ thấy nó trả về kết quả như sau
Như bạn có thể thấy, Năm và Tháng đã được lưu trữ ở định dạng YYYYMM với bí danh có tên là “year_month_registered. ”
Sử dụng DATE_FORMAT để lấy năm và tháng
Một cách khác là sử dụng hàm DATE_FORMAT. Điều này có thể đặc biệt hữu ích nếu bạn đang tìm kiếm một định dạng cụ thể. Ví dụ: nếu bạn muốn có dấu gạch nối để phân tách năm và tháng, thì bạn có thể sử dụng như sau
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered
Truy vấn trên sẽ dẫn đến định dạng sau
Bạn thậm chí có thể nói với hàm DATE_FORMAT rằng bạn muốn MySQL trả về tên văn bản đầy đủ của tháng
Hãy xem một số ví dụ về hàm MONTHNAME của MySQL và khám phá cách sử dụng hàm MONTHNAME trong MySQL
Ví dụ
mysql> SELECT MONTHNAME['2014-01-27']; Result: 'January' mysql> SELECT MONTHNAME['2014-05-08']; Result: 'May' mysql> SELECT MONTHNAME['2014-12-29']; Result: 'December'
Ví dụ MONTHNAME cuối cùng này sẽ hiển thị tên tháng cho ngày hệ thống hiện tại [ngày hệ thống hiện tại được trả về bởi hàm CURDATE]
Thí dụ
Trả về tên của tháng cho một ngày
CHỌN TÊN THÁNG["15-06-2017"];
Tự mình thử »Định nghĩa và cách sử dụng
Hàm MONTHNAME[] trả về tên của tháng cho một ngày nhất định
cú pháp
Giá trị tham số
Tham sốMô tảngàyBắt buộc. Giá trị ngày hoặc giờ để trích xuất tên tháng từchi tiết kỹ thuật
Thêm ví dụ
Thí dụ
Trả về tên của tháng cho một ngày
CHỌN TÊN THÁNG["2017-06-15 09. 34. 21"];
Thí dụ
Trả về tên của tháng cho ngày hệ thống hiện tại
CHỌN TÊN THÁNG[CURDATE[]];
Tự mình thử »Trong MySQL, bạn có thể sử dụng hàm
Jan2 với định dạng
Jan3 để trả về tên tháng ngắn. Ví dụ: bạn có thể trả về
Jan4 hoặc
Jan5 thay vì
Jan6 hoặc
Jan7
Thí dụ
SELECT DATE_FORMAT['2035-01-18', '%b'];
Kết quả
Jan
Đây là một ví dụ khác chạy qua các tháng khác nhau trong năm
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered1
Kết quả [sử dụng đầu ra dọc]
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered2
Bạn cũng có thể trả về các đơn vị ngày và giờ khác, nhưng bài viết này chỉ nói về việc trả về tên tháng ngắn
Xem Bộ chỉ định định dạng ngày của MySQL để biết danh sách các bộ định dạng định dạng có thể được sử dụng với
Jan8
Rút Ngắn Tên Đầy Tháng
Nếu bạn cần rút ngắn tên đầy đủ của tháng, bạn luôn có thể sử dụng một hàm như
Jan9 để chỉ trả về ba ký tự đầu tiên [hoặc bao nhiêu ký tự bạn cần]
Thí dụ
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered5
Kết quả
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered6
Ngoài ra, chúng ta có thể sử dụng một hàm như
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered10 để chuyển đổi thành kiểu dữ liệu chỉ có ba ký tự, chẳng hạn như thế này
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered8
Kết quả
SELECT DATE_FORMAT[date_registered, '%Y-%m'] AS year_month_registered, COUNT[*] AS num_registered FROM `members` GROUP BY year_month_registered9
Trong trường hợp này, chúng tôi nhận được cảnh báo vì chúng tôi đang cắt bớt một giá trị dài hơn
mysql> SELECT MONTHNAME['2014-01-27']; Result: 'January' mysql> SELECT MONTHNAME['2014-05-08']; Result: 'May' mysql> SELECT MONTHNAME['2014-12-29']; Result: 'December'0
Kết quả
mysql> SELECT MONTHNAME['2014-01-27']; Result: 'January' mysql> SELECT MONTHNAME['2014-05-08']; Result: 'May' mysql> SELECT MONTHNAME['2014-12-29']; Result: 'December'1
Rút ngắn tên tháng như thế này có thể ổn khi làm việc với các ngôn ngữ như tiếng Anh, nhưng lưu ý rằng nó có thể không trả về kết quả giống như khi sử dụng định dạng
Jan3
Để chứng minh điều tôi muốn nói, đây là những gì xảy ra khi tôi chuyển phiên của mình sang sử dụng ngôn ngữ tiếng Thái
Jan0
Kết quả
Jan1
Việc cắt bớt tên tháng đầy đủ sẽ trả về một kết quả khác với việc sử dụng công cụ xác định định dạng
Jan3 để trả về tên tháng ngắn