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

หาวันที่มากที่สุดจากคอลัมน์ VARCHAR ที่เก็บวันที่ใน MySQL

เมื่อคอลัมน์เก็บวันที่เป็นรูปแบบข้อความ (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() จะหาค่าสูงสุดได้อย่างถูกต้อง