有沒有辦法抓住一天的最近時間。如果您的數據庫中的數據格式化爲上午07:00和晚上08:00以及中午12:00。 Sorta像max()。但是那個時候。在一個Mysql查詢中。MYSQL最近的時間
感謝 埃裏克
有沒有辦法抓住一天的最近時間。如果您的數據庫中的數據格式化爲上午07:00和晚上08:00以及中午12:00。 Sorta像max()。但是那個時候。在一個Mysql查詢中。MYSQL最近的時間
感謝 埃裏克
最好以另一種格式存儲它,而不是文本。或者至少以24小時格式存儲它,然後簡單的排序就可以工作。將數據顯示給用戶時,可以將其轉換爲12小時格式。
不過,假設你不能改變你的數據庫模式,試試這個:
SELECT *
FROM your_table
ORDER BY STR_TO_DATE(your_time, '%h:%i%p') DESC
LIMIT 1
注意,這將無法使用索引來進行排序。
這也得到了「12:.....」號碼錯誤。你需要有四個排序字段,左= 12am,然後右(your_time),然後左= 12pm,然後是your_time。 – 2010-11-16 20:42:34
// @本·李:哦,是的,我完全忘記了上午12:00應該在* 01:00之前排序。有效'12:'應該按照'00:'排序。所以解決這個問題的另一種方法可能是在用'00:'替換'12:'之後按字段排序。 – 2010-11-16 20:47:45
即使您所做的改變,仍然會在列表的最頂端「中午12:00」(中午)和「下午12:59」之間的任何地方,而不是中間。您需要將REPLACE函數放入兩個參數中,如下所示:RIGHT(REPLACE(your_time,'12:','00:'),2)DESC,REPLACE(your_time,'12:','00:' )DESC' – 2010-11-16 20:57:38
你可以排序。
select time_column from table order by time_column desc limit 1;
不,他不能。它是一個字符串字段,它有上午和下午的部分 – 2010-11-16 20:43:11
假設你正在處理您的MySQL中的日期時間字段,你可以使用這個查詢來獲取每天的最大時間:
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
他說他沒有處理日期時間字段,但字符串字段是am/pm – 2010-11-16 20:43:53
不是,他說他的字段是*格式化的AM/PM。他沒有提到他的領域的類型。 – thomaspaulb 2010-11-16 20:49:52
如果您使用字符串,則應該嘗試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,然後很容易就能確定它的MAX。
而且我輸入的答案太慢了:-P – spanky 2010-11-16 21:19:31
+1無論如何因爲注意到現在只有一個字段被選中,所以MAX將工作。在將其更改爲使用STR_TO_DATE之後,我沒有更新我的答案以使用MAX。 – 2010-11-16 21:22:28
什麼是您的列的類型? – 2010-11-16 20:41:08
其Char字段 – Eric 2010-11-16 20:59:18