Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Query เลือกข้อมูล MySQL ตามเดือนที่กำหนด (MONTHNAME / MONTH)

ใช้ฟังก์ชัน MONTHNAME() (ชื่อเดือน) หรือ MONTH() (หมายเลขเดือน) ในเงื่อนไข WHERE

ไวยากรณ์

SELECT * FROM yourTableName WHERE MONTHNAME(yourColumnName) = 'yourMonthName';

หรือ

SELECT * FROM yourTableName WHERE MONTH(yourColumnName) = yourMonthNumber;

สร้างตารางตัวอย่าง

mysql> CREATE TABLE selectAllEntriesDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ShippingDate DATETIME
    -> );

เพิ่มข้อมูลตัวอย่าง (9 แถว)

mysql> INSERT INTO selectAllEntriesDemo(ShippingDate) VALUES
('2019-01-21'), ('2018-02-24'), ('2010-10-22'), ('2011-04-12'),
('2013-02-10'), ('2014-02-15'), ('2016-06-14'), ('2017-02-14'),
('2015-03-29');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM selectAllEntriesDemo;

ผลลัพธ์:

+----+---------------------+
| Id | ShippingDate        |
+----+---------------------+
| 1  | 2019-01-21 00:00:00 |
| 2  | 2018-02-24 00:00:00 |
| 3  | 2010-10-22 00:00:00 |
| 4  | 2011-04-12 00:00:00 |
| 5  | 2013-02-10 00:00:00 |
| 6  | 2014-02-15 00:00:00 |
| 7  | 2016-06-14 00:00:00 |
| 8  | 2017-02-14 00:00:00 |
| 9  | 2015-03-29 00:00:00 |
+----+---------------------+

Query เลือกเดือน กุมภาพันธ์ (MONTHNAME)

mysql> SELECT * FROM selectAllEntriesDemo WHERE MONTHNAME(ShippingDate) = 'February';

ผลลัพธ์ (4 แถว):

+----+---------------------+
| Id | ShippingDate        |
+----+---------------------+
| 2  | 2018-02-24 00:00:00 |
| 5  | 2013-02-10 00:00:00 |
| 6  | 2014-02-15 00:00:00 |
| 8  | 2017-02-14 00:00:00 |
+----+---------------------+

Query เลือกเดือน กุมภาพันธ์ (MONTH)

mysql> SELECT * FROM selectAllEntriesDemo WHERE MONTH(ShippingDate) = 2;

ผลลัพธ์เหมือนกัน (4 แถว)

ฟังก์ชันวันที่/เวลาที่เกี่ยวข้อง

ฟังก์ชันคืนค่าตัวอย่าง
MONTHNAME(date)ชื่อเดือนภาษาอังกฤษ'February'
MONTH(date)หมายเลขเดือน 1-122
YEAR(date)ปี 4 หลัก2019
DAY(date)วัน 1-3114
QUARTER(date)ไตรมาส 1-41

ประสิทธิภาพ: ใช้ Range Query แทน

-- เร็วกว่า ใช้ index ได้
SELECT * FROM selectAllEntriesDemo
WHERE ShippingDate >= '2019-02-01' AND ShippingDate < '2019-03-01';

หลีกเลี่ยงการใช้ฟังก์ชันบนคอลัมน์ใน WHERE เพื่อให้ใช้ index ได้