MYSQL最近的时间

时间:2010-11-16 20:35:49

标签: php mysql

有没有办法抓住一天中最近的时间。如果数据库中的数据格式为07:00 AM和08:00 pm以及12:00 pm。排序类似于max()。但是时间。在Mysql查询中。

由于 埃里克

4 个答案:

答案 0 :(得分:3)

最好将其存储为其他格式而不是文本格式。或者至少以24小时格式存储它,然后一个简单的排序就可以了。当您向用户显示数据时,可以将其转换为12小时格式。

但假设您无法更改数据库架构,请尝试以下操作:

SELECT *
FROM your_table
ORDER BY STR_TO_DATE(your_time, '%h:%i%p') DESC
LIMIT 1

请注意,这将无法使用索引来执行排序。

答案 1 :(得分:1)

如果您使用的是字符串,则应该尝试使用STR_TO_DATE()。如果您的时间总是格式化为hh:mmAMPM,则可以使用:

MAX(STR_TO_DATE(YourTimeField,'%h:%i%p'))

这会将您的字符串转换为时间,而不需要通过子字符串或任何东西将其拆分,因此MySQL会在上午09:07看到09:07:00和02:35 PM作为14:35:00,然后很容易就能确定它的最大值。

答案 2 :(得分:0)

假设您正在处理MySQL中的DATETIME字段,您可以使用此查询来获取每天的最长时间:

SELECT DATE(YourDateField), MAX(TIME(YourDateField)) FROM YourTable
GROUP BY DATE(YourDateField)

当您处理VARCHAR字段时,您可以尝试这样的黑客攻击:

SELECT YourDateField, SUBSTRING(MAX(
    CASE WHEN YourTimeField LIKE '%AM%' THEN '0' ELSE '1' END 
    + REPLACE(YourTimeField, '12:', '00:')
), 2)
GROUP BY YourDateField

答案 3 :(得分:-1)

你可以排序。

select time_column from table order by time_column desc limit 1;