การใช้ BETWEEN กับ NOW()
คำสั่ง BETWEEN ร่วมกับฟังก์ชัน NOW() ช่วยหาแถวที่วันที่ปัจจุบันอยู่ในช่วงระหว่างสองวันที่
ตัวอย่าง: ตารางพนักงาน
mysql> create table DemoTable771 (
Joiningdate datetime,
Relievingdate datetime );
Query OK, 0 rows affected (1.15 sec)
mysql> insert into DemoTable771 values('2016-01-21','2016-09-23');
mysql> insert into DemoTable771 values('2019-01-21','2019-09-23');
mysql> insert into DemoTable771 values('2017-04-01','2018-12-31');
mysql> insert into DemoTable771 values('2019-04-01','2019-12-31');
ค้นหาพนักงานที่ยังทำงานอยู่ (วันที่ปัจจุบันอยู่ในช่วง)
mysql> select * from DemoTable771 where NOW() between Joiningdate and Relievingdate;
ผลลัพธ์ (สมมติวันนี้คือ 2019-08-03):
+---------------------+---------------------+
| Joiningdate | Relievingdate |
+---------------------+---------------------+
| 2019-01-21 00:00:00 | 2019-09-23 00:00:00 |
| 2019-04-01 00:00:00 | 2019-12-31 00:00:00 |
+---------------------+---------------------+
รายละเอียดการทำงาน
NOW()คืนค่าวันที่และเวลาปัจจุบันของเซิร์ฟเวอร์BETWEENรวมค่าขอบเขต (Inclusive) คือJoiningdate <= NOW() <= Relievingdate- เหมาะสำหรับระบบ HR, สมาชิก, การจองที่พัก ฯลฯ
ขยายใช้งาน: ใช้ CURDATE() แทน NOW()
หากไม่ต้องการพิจารณาเวลา ใช้ CURDATE() แทน:
select * from DemoTable771 where CURDATE() between DATE(Joiningdate) and DATE(Relievingdate);
สรุป
WHERE NOW() BETWEEN start_date AND end_date เป็นรูปแบบมาตรฐานสำหรับตรวจสอบสถานะ "Active" ตามช่วงเวลา