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

จัดเรียงเวลา AM/PM ใน MySQL

การจัดเรียงเวลาในรูปแบบ 12 ชั่วโมง (AM/PM) ใน MySQL

ใช้ STR_TO_DATE() แปลงสตริงเวลา AM/PM เป็นค่า TIME จริง ก่อนจัดเรียงด้วย ORDER BY

SELECT yourColumn FROM yourTable ORDER BY STR_TO_DATE(yourColumn, '%l:%i %p');

ตัวอย่างการใช้งาน

สร้างตารางเก็บเวลาออก (String):

mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, UserLogoutTime varchar(200));
mysql> insert into DemoTable(UserLogoutTime) values('09:45 PM');
mysql> insert into DemoTable(UserLogoutTime) values('11:56 AM');
mysql> insert into DemoTable(UserLogoutTime) values('01:01 AM');
mysql> insert into DemoTable(UserLogoutTime) values('02:01 PM');
mysql> insert into DemoTable(UserLogoutTime) values('04:10 PM');

ข้อมูลต้นฉบับ (เรียงตาม String ไม่ถูกต้อง):

+----+----------------+
| Id | UserLogoutTime |
+----+----------------+
| 1  | 09:45 PM       |
| 2  | 11:56 AM       |
| 3  | 01:01 AM       |
| 4  | 02:01 PM       |
| 5  | 04:10 PM       |
+----+----------------+

คิวรีจัดเรียงตามเวลาจริง:

mysql> select UserLogoutTime from DemoTable ORDER BY STR_TO_DATE(UserLogoutTime, '%l:%i %p');
+----------------+
| UserLogoutTime |
+----------------+
| 01:01 AM       |
| 11:56 AM       |
| 02:01 PM       |
| 04:10 PM       |
| 09:45 PM       |
+----------------+

Format Specifiers สำหรับ 12-hour:

  • %l - ชั่วโมง 1-12 (ไม่ padding 0)
  • %h - ชั่วโมง 01-12 (padding 0)
  • %i - นาที 00-59
  • %p - AM/PM

แนะนำ: เก็บเวลาในคอลัมน์ TIME หรือ DATETIME แทน String จะ Query/Sort ได้โดยตรง ไม่ต้องแปลงทุกครั้ง