有没有办法抓住一天中最近的时间。如果数据库中的数据格式为07:00 AM和08:00 pm以及12:00 pm。排序类似于max()。但是时间。在Mysql查询中。
由于 埃里克
答案 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;