我有一个mysql数据库,其中有在不同时间创建的多个表,我想通过“create_time”查找数据库中最早的表。 但是我还需要将“create_time”转换为unix_timestamp。 我已经研究了一些关于stackoverflow的其他问题,但它们只描述了如何获取日期。 我需要根据数据库中最旧的表的完整时间戳或unix时间戳来查找它。
到目前为止,我已经尝试了这两个查询,但都没有返回最早的表。
sql = "SELECT MAX(create_time) create_time FROM information_schema.tables WHERE table_schema = 'notes' ORDER BY UNIX_TIMESTAMP(create_time) DESC LIMIT 1";
$sql = "SELECT MAX(create_time) FROM information_schema.tables WHERE table_schema = 'notes' GROUP BY TABLE_SCHEMA ORDER BY UNIX_TIMESTAMP(create_time) DESC LIMIT 1";
另外,作为一个额外的信息,数据库不会在ASC或DESC中自动将表从最早到最新按顺序排列。 因此尝试使用其中任何一个进行排序都不会找到最早的表。 它只查找它找到的第一个最早的表,而不查找DB中实际最早的表。
按create_time
选择数据库中最早的表
我想你想:
SELECT t.*, UNIX_TIMESTAMP(create_time) create_timestamp
FROM information_schema.tables t
WHERE table_schema = 'notes'
ORDER BY create_time
LIMIT 1
这将为您提供由create_time
定义的information_schema.tables
中最早的记录,以及包含相应unix时间戳的附加列。