เมื่อคอลัมน์เก็บวันที่เป็นรูปแบบข้อความ (VARCHAR) เช่น 'Sunday, 11 August 2019' ต้องแปลงเป็นวันที่จริงด้วย STR_TO_DATE() ก่อนจึงจะใช้ MAX() หาค่าสูงสุดได้ถูกต้อง
ตัวอย่างการสร้างตาราง
mysql> create table DemoTable (
AdmissionDate varchar(100) );
Query OK, 0 rows affected (0.76 sec)
เพิ่มข้อมูลวันที่แบบข้อความ
mysql> insert into DemoTable values('Sunday, 11 August 2019');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Friday, 18 October 2019');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Thursday, 18 July 2019');
Query OK, 1 row affected (0.23 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
+-------------------------+ | AdmissionDate | +-------------------------+ | Sunday, 11 August 2019 | | Friday, 18 October 2019 | | Thursday, 18 July 2019 | +-------------------------+ 3 rows in set (0.00 sec)
คำสั่งหาวันที่มากที่สุด
mysql> select max(str_to_date(AdmissionDate, '%W, %d %M %Y')) AS MaxDate from DemoTable;
ผลลัพธ์
+------------+ | MaxDate | +------------+ | 2019-10-18 | +------------+ 1 row in set (0.04 sec)
คำอธิบายรูปแบบวันที่ (Format Specifiers):
%W- ชื่อวันเต็ม (Sunday, Monday, ...)%d- วันที่ 2 หลัก (01-31)%M- ชื่อเดือนเต็ม (January, February, ...)%Y- ปี 4 หลัก (2019)
ฟังก์ชัน STR_TO_DATE() จะแปลงสตริงเป็นค่า DATE แล้ว MAX() จะหาค่าสูงสุดได้อย่างถูกต้อง