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

ใช้ STR_TO_DATE เป็นคอลัมน์ใน HAVING clause MySQL

ใช้ 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 ตามรูปแบบที่กำหนด