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

MySQL Query แสดง Database เรียงตามวันที่สร้าง

แสดงรายชื่อ Database เรียงตาม Creation Time

ใช้ INFORMATION_SCHEMA.TABLES รวม CREATE_TIME แล้ว GROUP BY Database

คำสั่ง

SELECT 
    TABLE_SCHEMA AS ALL_DATABASE_NAME,
    MAX(CREATE_TIME) AS creationTime,
    MAX(UPDATE_TIME) AS updatingTime
FROM INFORMATION_SCHEMA.TABLES
GROUP BY ALL_DATABASE_NAME
ORDER BY creationTime DESC;

ผลลัพธ์ตัวอย่าง

+---------------------+---------------------+---------------------+
| ALL_DATABASE_NAME   | creationTime        | updatingTime        |
+---------------------+---------------------+---------------------+
| test                | 2019-04-03 11:37:58 | 2019-04-03 11:38:55 |
| hb_student_tracker  | 2019-03-19 03:54:32 | NULL                |
| sample              | 2019-03-15 00:04:29 | 2019-03-08 16:06:09 |
| ...                 | ...                 | ...                 |
+---------------------+---------------------+---------------------+

คำอธิบาย

  • MAX(CREATE_TIME) - วันที่สร้างตารางล่าสุดใน Database นั้น = ประมาณ Creation Date
  • MAX(UPDATE_TIME) - วันที่แก้ไขล่าสุด
  • GROUP BY TABLE_SCHEMA - รวมตาม Database
  • InnoDB: UPDATE_TIME อาจเป็น NULL (ขึ้น Version)
  • System DB (mysql, information_schema, performance_schema, sys) มี CREATE_TIME เก่า

ข้อจำกัด

  • ไม่ใช่ Creation Time ของ Database ตรงๆ (MySQL ไม่เก็บ)
  • ใช้ตารางล่าสุดแทน
  • DROP/CREATE Table จะเปลี่ยนค่านี้

ทางเลือก: MySQL 8.0 Data Dictionary

SELECT SCHEMA_NAME, CREATED FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY CREATED DESC;

MySQL 8.0+ เก็บ Created Timestamp ของ Schema โดยตรง