2011-02-16 50 views
2

如何使用MySQL從下表中獲取「最大」日期?用PHP獲取最大日期

date_time 
----------------------------- 
Wednesday, 21 July 2010 20:41:51 
Tuesday, 19 October 2010 16:7:41 
Tuesday, 29 November 2010 16:7:41 

我想檢索表中的最大日期。

+0

什麼是日期列數據類型?它是varchar? – 2011-02-16 08:24:22

+0

是的。它是varchar – vishnu 2011-02-16 08:27:18

+0

可能的重複:* [我如何選擇具有MAX(列值)的行,由SQL中的另一列DISTINCT?](http://stackoverflow.com/questions/612231)*。 – 2011-06-11 13:10:50

回答

5
 
mysql> select str_to_date('Wednesday, 21 July 2010 20:41:51', '%W, %d %M %Y %T'); 
+--------------------------------------------------------------------+ 
| str_to_date('Wednesday, 21 July 2010 20:41:51', '%W, %d %M %Y %T') | 
+--------------------------------------------------------------------+ 
| 2010-07-21 20:41:51            | 
+--------------------------------------------------------------------+

str_to_date

不要推倒重來,存儲於列要獲得最大的價值

select max(date_time) from your_table; 

如果你喜歡保持varchar(祝你好運)

select max(str_to_date(date_time, '%W, %d %M %Y %T')) from your_table; 
0
SELECT date_time FROM TABLE ORDER BY date_time DESC LIMIT 1 

當date_time字段的類型爲DATETIME或任何其他日期特定的類型時,這將起作用。

+0

實際上,date_time字段類型是varchar – vishnu 2011-02-16 08:27:54

1

如果在該格式下運行max不起作用我猜你可以嘗試在查詢中將它重新格式化爲允許使用date format的最大值的格式。只要該列正確格式化,你應該能夠通過desc來執行一個命令。

0

您可以使用

SELECT mydate 
FROM mytable 
ORDER BY mydate DESC 
LIMIT 1 

或者只是

Select max(mydate) from mytable 
+0

date_time字段類型是varchar,因此不會起作用。 – seanieb 2011-02-16 08:37:55

+0

我從不在數據庫中使用varchar存儲日期。爲什麼有人這樣做? – quocnguyen 2011-02-16 09:01:42

1
SELECT * FROM date_time ORDER BY STR_TO_DATE(date,'%Y %M,%d') DESC LIMIT 1 
1

唯一可能的解決方案是保存在適當的格式日期。
所以,在date-time

alter table your_table add column new_date_time datetime; 
update your_table set new_date_time=str_to_date(date_time, '%W, %d %M %Y %T'); 
alter table channge column date_time ditch_date_time varchar(255); 
alter table channge column new_date_time date_time datetime; 

你的字段類型更改爲datetime