สำหรับสิ่งนี้ ให้ใช้ ORDER BY STR_TO_DATE ใน MySQL เช่นเดียวกับไวยากรณ์ด้านล่าง -
เลือก *จากชื่อตารางของคุณ ORDER BY STR_TO_DATE(yourColumnName, '%M %Y') DESC;
ให้เราสร้างตารางก่อน -
mysql> สร้างตาราง DemoTable678(DueDate varchar(200)); สอบถามตกลง 0 แถวได้รับผลกระทบ (0.62 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก เราได้ใส่วันที่ที่นี่ -
mysql> แทรกลงในค่า DemoTable678 ('มีนาคม 2019'); Query OK, 1 แถวที่ได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า DemoTable678 ('November 2018'); Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า DemoTable678 ('มกราคม 2019'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.18 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select -
mysql> เลือก *จาก DemoTable678;
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
<ก่อนหน้า>+--------------+| DueDate |+--------------+| มีนาคม 2019 || พฤศจิกายน 2018 || มกราคม 2019 |+--------------+3 แถวในชุด (0.00 วินาที)ต่อไปนี้เป็นแบบสอบถามที่จะสั่งซื้อตามวันที่กำหนดด้วยประเภท varchar -
mysql> เลือก *จาก DemoTable678 ORDER BY STR_TO_DATE(DueDate, '%M %Y') DESC;
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
<ก่อนหน้า>+--------------+| DueDate |+--------------+| มีนาคม 2019 || มกราคม 2019 || พฤศจิกายน 2018 |+---------------------+3 แถวในชุด (0.00 วินาที)