Vấn đề:
Bạn muốn lấy năm và tháng từ một ngày cụ thể trong cơ sở dữ liệu MySQL.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên là dates
với dữ liệu trong các cột id
và date
.
id | ngày |
---|---|
1 | 2008-04-21 |
2 | 1987-12-14 |
Hãy trích xuất year
và month
kể từ ngày.
Giải pháp 1:
SELECT EXTRACT(YEAR FROM date) AS year, EXTRACT(MONTH FROM date) AS month FROM dates;
Kết quả là:
năm | tháng |
---|---|
2008 | 4 |
1987 | 12 |
Thảo luận:
Để lấy các cột năm và tháng, hãy sử dụng EXTRACT(part FROM date)
hàm số. Trong giải pháp này, đối số part được thay thế bằng YEAR
và MONTH
để lấy year
và month
riêng biệt, mỗi trong cột riêng của nó.
Bạn có thể tìm hiểu thêm về EXTRACT()
trong tài liệu MySQL chính thức.
Giải pháp 2:
SELECT EXTRACT(YEAR_MONTH FROM date) AS year_and_month FROM dates;
Kết quả là:
year_and_month |
---|
200804 |
198712 |
Thảo luận:
Giải pháp này hoạt động giống như giải pháp trước đó, nhưng YEAR_MONTH
được sử dụng để lấy năm và tháng cùng trong một cột thay vì lấy chúng riêng lẻ. Lưu ý rằng các giá trị của năm và tháng không được tách biệt nhau.
Giải pháp 3:
SELECT YEAR(date) AS year, MONTH(date) AS month FROM dates;
Kết quả là:
năm | tháng |
---|---|
2008 | 4 |
1987 | 12 |
Thảo luận:
Lần này, YEAR()
và MONTH()
các hàm được sử dụng để tạo hai cột. YEAR()
trả về năm và MONTH()
trả về tháng dưới dạng một số.
Giải pháp 4:
SELECT YEAR(date) AS year, MONTHNAME(date) AS month FROM dates;
Kết quả là:
năm | tháng |
---|---|
2008 | tháng 4 |
1987 | Tháng 12 |
Thảo luận:
Để lấy tên của tháng, hãy sử dụng MONTHNAME()
hàm số. Kết quả hiển thị tên tháng thay vì số tháng.
Giải pháp 5:
SELECT DATE_FORMAT(date, '%Y-%m') AS year_and_month FROM dates;
Kết quả là:
year_and_month |
---|
2008-04 |
1987-12 |
Thảo luận:
Sử dụng DATE_FORMAT()
chức năng hiển thị date
các giá trị trong một định dạng cụ thể. Nó có date
làm đối số đầu tiên và một chuỗi mô tả định dạng ngày mong muốn làm đối số thứ hai. Trong trường hợp của chúng tôi, chuỗi '%Y-%m
', %Y
trả về năm, ‘ -
’ được sử dụng làm dấu phân tách và %m
trả về tháng ở dạng số (nó có thể được thay thế bằng %M
để lấy tên tháng).
Bạn có thể tìm hiểu thêm về DATE_FORMAT()
trong tài liệu MySQL chính thức.