2011-02-16 5 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

Каков тип данных столбца даты? Это варчар? –

+0

Да. это varchar – vishnu

+0

Возможный дубликат: * [Как я могу выбрать строки с MAX (значение столбца), DISTINCT другим столбцом в SQL?] (http://stackoverflow.com/questions/612231) *. –

ответ

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

Не изобретайте колесо, хранится в столбце в 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; 

Чтобы получить максимальное значение

select max(date_time) from your_table; 

Если вы как держать varchar (удачи с этим)

select max(str_to_date(date_time, '%W, %d %M %Y %T')) from your_table; 
+0

oh .. спасибо u очень. Я сохранил поле только в формате varchar, он работает. – vishnu

0
SELECT date_time FROM TABLE ORDER BY date_time DESC LIMIT 1 

Это будет работать, если поле date_time имеет тип DATETIME или какой-либо другой другой конкретный тип даты.

+0

Фактически тип поля date_time - varchar – vishnu

1

Если запуск макс в этом формате не работает, я думаю, вы могли бы попытаться переформатировать его в запросе в формат, который позволит максимально использовать date format. До тех пор, пока столбец правильно сформирован, вы должны иметь возможность просто выполнить заказ по desc.

0

Вы можете использовать

SELECT mydate 
FROM mytable 
ORDER BY mydate DESC 
LIMIT 1 

Или просто

Select max(mydate) from mytable 
+0

Тип поля date_time - varchar, так что не будет работать. – seanieb

+0

Я никогда не храню дату в базе данных с помощью varchar. почему кто-то это делает? – quocnguyen

+0

Up-vote this, так как это лучший способ получить максимальную дату/дату. Вы никогда не должны хранить его в формате varchar. –

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

Тогда это был бы мой следующий ответ. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date – samy

1

Единственным возможным решением является сохранение даты в надлежащем формате .
Таким образом, изменить тип поля для datetime

+0

Я бы не сказал, что это единственное возможное решение, но это лучший решение. – seanieb

+0

@seanieb, когда у вас будет достаточно практического опыта, вы узнаете, что не следовать хромым неправильным представлениям, исходящим от лени и невежества, и как можно скорее исправить эти проблемы - это единственное решение. –

Смежные вопросы