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

การแสดงข้อมูลจากวันนี้จนสิ้นเดือนใน MySQL

เพื่อดึงข้อมูลจากวันปัจจุบันจนถึงวันสุดท้ายของเดือน ใช้ 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())