MySQL không có hàm DATEPART() như SQL Server. Thay vào đó, bạn sử dụng hàm MONTH() để trích xuất tháng từ cột ngày.
Cú pháp
SELECT * FROM ten_bang WHERE MONTH(ten_cot_ngay) = gia_tri_thang;
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE demo_thang (
-> Id INT NOT NULL AUTO_INCREMENT,
-> LoginDate DATE,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (2.42 sec)
Chèn dữ liệu:
mysql> INSERT INTO demo_thang(LoginDate) VALUES(CURDATE());
mysql> INSERT INTO demo_thang(LoginDate) VALUES(DATE_ADD(CURDATE(), INTERVAL -3 YEAR));
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2014-05-21');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2015-08-25');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2018-12-31');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2011-12-21');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2013-10-02');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2006-12-11');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2010-03-09');
mysql> INSERT INTO demo_thang(LoginDate) VALUES('2012-12-12');
Dữ liệu:
+----+------------+ | Id | LoginDate | +----+------------+ | 1 | 2019-01-31 | | 2 | 2016-01-31 | | 3 | 2014-05-21 | | 4 | 2015-08-25 | | 5 | 2018-12-31 | | 6 | 2011-12-21 | | 7 | 2013-10-02 | | 8 | 2006-12-11 | | 9 | 2010-03-09 | | 10 | 2012-12-12 | +----+------------+
Truy vấn các bản ghi có tháng = 12:
mysql> SELECT * FROM demo_thang WHERE MONTH(LoginDate) = 12;
Kết quả:
+----+------------+ | Id | LoginDate | +----+------------+ | 5 | 2018-12-31 | | 6 | 2011-12-21 | | 8 | 2006-12-11 | | 10 | 2012-12-12 | +----+------------+
Ngoài MONTH(), MySQL còn cung cấp YEAR(), DAY(), HOUR(), MINUTE(), SECOND() để trích xuất các thành phần ngày giờ khác.