ใช้ HAVING แทน WHERE เมื่อต้องการกรองด้วยคอลัมน์ที่คำนวณจากนิพจน์ (alias)
สร้างตารางตัวอย่าง
mysql> CREATE TABLE DemoTable (
-> AdmissionDate VARCHAR(100)
-> );
เพิ่มข้อมูลตัวอย่าง (รูปแบบ DD/MM/YYYY)
mysql> INSERT INTO DemoTable VALUES('10/12/2017');
mysql> INSERT INTO DemoTable VALUES('01/11/2018');
mysql> INSERT INTO DemoTable VALUES('31/01/2019');
mysql> INSERT INTO DemoTable VALUES('09/06/2019');
mysql> INSERT INTO DemoTable VALUES('19/04/2019');
แสดงข้อมูล
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+---------------+ | AdmissionDate | +---------------+ | 10/12/2017 | | 01/11/2018 | | 31/01/2019 | | 09/06/2019 | | 19/04/2019 | +---------------+
คำสั่งแปลงวันที่และกรองด้วย HAVING
mysql> SELECT STR_TO_DATE(AdmissionDate, '%d/%m/%Y') AS newDate
-> FROM DemoTable
-> HAVING newDate >= '2019-01-01';
ผลลัพธ์ (เฉพาะปี 2019):
+------------+ | newDate | +------------+ | 2019-01-31 | | 2019-06-09 | | 2019-04-19 | +------------+
คำอธิบาย: WHERE ไม่สามารถใช้ alias (newDate) ได้ ต้องใช้ HAVING แทน (MySQL อนุญาตให้ HAVING ใช้ alias ได้) STR_TO_DATE แปลงสตริงเป็น DATE ตามรูปแบบที่กำหนด