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

การ SELECT ข้อมูลจากวันที่เฉพาะจนถึงปัจจุบันใน MySQL

ใช้เงื่อนไข >= กับวันที่เริ่มต้น และ ORDER BY เพื่อเรียงลำดับ

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

mysql> create table DemoTable ( 
    Joiningdate date ); 
Query OK, 0 rows affected (0.56 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> insert into DemoTable values('2010-01-01'); Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('2010-03-31'); Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2010-11-04'); Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('2012-12-31'); Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2019-01-03'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2016-04-05'); Query OK, 1 row affected (0.11 sec)

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

mysql> select *from DemoTable;
+-------------+
| Joiningdate |
+-------------+
| 2010-01-01  |
| 2010-03-31  |
| 2010-11-04  |
| 2012-12-31  |
| 2019-01-03  |
| 2016-04-05  |
+-------------+
6 rows in set (0.00 sec)

คิวรี่จาก 2010-11-04 ถึงปัจจุบัน

mysql> select *from DemoTable where Joiningdate >= '2010-11-04' order by Joiningdate;

ผลลัพธ์:

+-------------+
| Joiningdate |
+-------------+
| 2010-11-04  |
| 2012-12-31  |
| 2016-04-05  |
| 2019-01-03  |
+-------------+
4 rows in set (0.00 sec)

การใช้วันที่แบบ Dynamic

-- จากวันที่เฉพาะ ถึง วันนี้
WHERE Joiningdate >= '2010-11-04' AND Joiningdate <= CURDATE()

-- 6 เดือนย้อนหลัง
WHERE Joiningdate >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH)

-- เริ่มต้นปีนี้
WHERE Joiningdate >= DATE_FORMAT(CURDATE(), '%Y-01-01')

Index สำหรับ Date Column

CREATE INDEX idx_joining_date ON DemoTable(Joiningdate);

Index จะช่วยให้ Range query (>=, BETWEEN) เร็วขึ้นมาก

Pagination สำหรับข้อมูลเยอะ

SELECT * FROM DemoTable 
WHERE Joiningdate >= '2010-11-04' 
ORDER BY Joiningdate 
LIMIT 20 OFFSET 0;  -- หน้าแรก 20 แถว