ใช้เงื่อนไข >= กับวันที่เริ่มต้น และ 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 แถว