เมื่อต้องการรวมค่าตัวเลข (SUM) ของแถวที่อยู่ในช่วงวันที่เฉพาะ สามารถใช้เงื่อนไข BETWEEN ในส่วน WHERE ได้ ซึ่งรองรับชนิดข้อมูล DATE, DATETIME, และ TIMESTAMP
ตัวอย่างการใช้งาน
สร้างตารางขายสินค้า:
mysql> CREATE TABLE DemoTable1444 (
-> Value INT,
-> PurchaseDate DATETIME
-> );
เพิ่มข้อมูล:
mysql> INSERT INTO DemoTable1444 VALUES (40, '2019-01-10'); mysql> INSERT INTO DemoTable1444 VALUES (100, '2019-10-03'); mysql> INSERT INTO DemoTable1444 VALUES (170, '2019-11-21'); mysql> INSERT INTO DemoTable1444 VALUES (70, '2018-12-05');
ดูข้อมูล:
mysql> SELECT * FROM DemoTable1444; +-------+---------------------+ | Value | PurchaseDate | +-------+---------------------+ | 40 | 2019-01-10 00:00:00 | | 100 | 2019-10-03 00:00:00 | | 170 | 2019-11-21 00:00:00 | | 70 | 2018-12-05 00:00:00 | +-------+---------------------+
คำนวณ SUM ระหว่าง 2019-10-02 ถึง 2019-12-31:
mysql> SELECT SUM(Value) FROM DemoTable1444
-> WHERE PurchaseDate BETWEEN '2019-10-02' AND '2019-12-31';
ผลลัพธ์ (100 + 170 = 270):
+------------+ | SUM(Value) | +------------+ | 270 | +------------+
รายละเอียด BETWEEN
- Inclusive: รวมค่าขอบเขตทั้งสองข้าง (>= เริ่มต้น และ <= สิ้นสุด)
- ทำงานกับตัวเลข, วันที่, เวลา, และสตริงได้
- เทียบเท่ากับ:
WHERE PurchaseDate >= '2019-10-02' AND PurchaseDate <= '2019-12-31'
คำแนะนำสำคัญเกี่ยวกับ DATETIME
หากคอลัมน์เป็น DATETIME และเงื่อนไขสิ้นสุดเป็นแค่วันที่ (ไม่มีเวลา) จะถูกตีความว่า 2019-12-31 00:00:00 ทำให้ข้อมูลเวลา 2019-12-31 10:00:00 ไม่ถูกรวม
แก้ไข: ใช้ '2019-12-31 23:59:59' หรือ DATE(PurchaseDate) BETWEEN '2019-10-02' AND '2019-12-31'
การประยุกต์ใช้
- รายงานยอดขายรายเดือน/รายไตรมาส
- สรุปยอดสั่งซื้อในช่วงโปรโมชั่น
- คำนวณภาษี/ค่าคอมมิชชั่นในช่วงเวลาที่กำหนด
- Dashboard แสดง KPI ตามช่วงวันที่ผู้ใช้เลือก