我在有很多行的表中有 3 列。对于特定行,我必须获取该列的最后一个值。那么如何获取最后一个日期是 2013 年 11 月 10 日。
uid date book_id
1 18/8/2013 41
to
11/10/2013
问题是您将日期存储为字符串,而不是日期。11/10/2013
不是有效日期,如果不使用 DATE_FORMAT 或其他函数,您将永远无法正确排序。考虑到 MySQL 对日期的原生处理,这太过分了。
此外,如果您要存储 2 个日期,请使用 2 列(例如date_start
和date_end
)。永远不要将它们组合成 1。
备份您的数据,将列的类型更改为 DATE 或 DATETIME 并使用ORDER BY date_field DESC LIMIT 1
.
您想要最新的日期条目吗?以降序排列(最新日期优先)并将结果集限制为 1。
SELECT date FROM table ORDER BY date DESC LIMIT 1 ;
如果您真的意味着您在一个日期字段中有多个日期,甚至还有文本,那么您需要将您的数据库架构更改为:
uid | 开始日期 | 结束日期 | 书号
这应该让你继续前进。
SELECT * FROM table_name ORDER BY STR_TO_DATE(date,'%e/%c/%Y') DESC LIMIT 1;
-- ^- the most recent date is first
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date
如果你想要给定 book_id 的最后日期,你可以写类似
SELECT MAX(date) FROM myTable WHERE book_id = 41
这就是你将如何使用 mysql 在 php 中执行此操作
$Query = mysql_query(SELECT date FROM table_name ORDER BY date DESC LIMIT 1);
$Date = mysql_result($Query,0,'date');
$Date = explode('to',$Date);
$Last_Date = $Date[1];