เพื่อดึงข้อมูลจากวันปัจจุบันจนถึงวันสุดท้ายของเดือน ใช้ CURDATE() และ LAST_DAY() ร่วมกับ BETWEEN
สร้างตารางตัวอย่าง
mysql> create table DemoTable (
BookingDate date );
Query OK, 0 rows affected (0.67 sec)
เพิ่มข้อมูลตัวอย่าง
mysql> insert into DemoTable values('2019-09-21'); Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('2018-09-10'); Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('2019-09-10'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-09-08'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2016-09-18'); Query OK, 1 row affected (0.17 sec)
แสดงข้อมูลทั้งหมด
mysql> select *from DemoTable;
+-------------+ | BookingDate | +-------------+ | 2019-09-21 | | 2018-09-10 | | 2019-09-10 | | 2019-09-08 | | 2016-09-18 | +-------------+ 5 rows in set (0.00 sec)
คิวรี่ดึงข้อมูลจากวันนี้ถึงสิ้นเดือน
mysql> select *from DemoTable where BookingDate between curdate() and last_day(curdate());
ผลลัพธ์ (สมมติวันนี้คือ 2019-09-10):
+-------------+ | BookingDate | +-------------+ | 2019-09-21 | | 2019-09-10 | | 2019-09-08 | +-------------+ 3 rows in set (0.01 sec)
คำอธิบายฟังก์ชัน
CURDATE()- คืนคาวันปัจจุบัน (ไม่รวมเวลา)LAST_DAY(date)- คืนคาวันสุดท้ายของเดือนของวันที่กำหนดBETWEEN- รวมทั้งค่าเริ่มต้นและค่าสิ้นสุด
กรณีใช้กับ DATETIME
-- จากตอนนี้จนสิ้นวันนี้ WHERE datetime_col BETWEEN NOW() AND DATE(NOW()) + INTERVAL 1 DAY - INTERVAL 1 SECOND -- หรือง่ายกว่า WHERE DATE(datetime_col) BETWEEN CURDATE() AND LAST_DAY(CURDATE())
กรณีต้องการเฉพาะเดือนปัจจุบัน (ทั้งเดือน)
WHERE YEAR(BookingDate) = YEAR(CURDATE()) AND MONTH(BookingDate) = MONTH(CURDATE())