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

ดึงวันที่เริ่มต้นและสิ้นสุดของปีเฉพาะใน MySQL

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1843 (
    StartDate DATE,
    EndDate DATE
);

mysql> INSERT INTO DemoTable1843 VALUES('2019-01-21', '2019-10-12');
mysql> INSERT INTO DemoTable1843 VALUES('2018-10-12', '2018-12-31');
mysql> INSERT INTO DemoTable1843 VALUES('2016-04-01', '2017-05-02');

Query ข้อมูลที่อยู่ในปี 2018

mysql> SELECT * FROM DemoTable1843
    WHERE YEAR(StartDate) = '2018'
    OR YEAR(EndDate) = '2018';

ผลลัพธ์:

+------------+------------+
| StartDate  | EndDate    |
+------------+------------+
| 2018-10-12 | 2018-12-31 |
+------------+------------+

การสร้างวันที่เริ่มต้นและสิ้นสุดของปี

ถ้าต้องการสร้างวันที่ 1 มกราคม และ 31 ธันวาคมของปีใดปีหนึ่ง:

-- วันที่ 1 มกราคม 2018
SELECT STR_TO_DATE('2018-01-01', '%Y-%m-%d');
-- หรือ
SELECT MAKEDATE(2018, 1);

-- วันที่ 31 ธันวาคม 2018
SELECT LAST_DAY('2018-12-01');
-- หรือ
SELECT DATE_SUB(MAKEDATE(2019, 1), INTERVAL 1 DAY);

การใช้งานใน WHERE Clause แบบมีประสิทธิภาพ

-- แบบใช้ Index ได้ (แนะนำ)
WHERE StartDate >= '2018-01-01' AND StartDate < '2019-01-01'

-- แบบใช้ Function (ไม่ใช้ Index)
WHERE YEAR(StartDate) = 2018

ฟังก์ชัน YEAR()

  • ดึงปีจาก DATE/DATETIME/TIMESTAMP
  • คืนค่าเป็นตัวเลข 4 หลัก
  • ใช้ได้ใน SELECT, WHERE, GROUP BY, ORDER BY