0

我在有很多行的表中有 3 列。对于特定行,我必须获取该列的最后一个值。那么如何获取最后一个日期是 2013 年 11 月 10 日。

uid       date         book_id
  1   18/8/2013          41
         to
      11/10/2013       
4

5 回答 5

1

问题是您将日期存储为字符串,而不是日期。11/10/2013不是有效日期,如果不使用 DATE_FORMAT 或其他函数,您将永远无法正确排序。考虑到 MySQL 对日期的原生处理,这太过分了。

此外,如果您要存储 2 个日期,请使用 2 列(例如date_startdate_end)。永远不要将它们组合成 1。

备份您的数据,将列的类型更改为 DATE 或 DATETIME 并使用ORDER BY date_field DESC LIMIT 1.

于 2013-09-23T11:32:04.020 回答
1

您想要最新的日期条目吗?以降序排列(最新日期优先)并将结果集限制为 1。

SELECT date FROM table ORDER BY date DESC LIMIT 1 ;

如果您真的意味着您在一个日期字段中有多个日期,甚至还有文本,那么您需要将您的数据库架构更改为:

uid | 开始日期 | 结束日期 | 书号

于 2013-09-23T11:23:04.100 回答
0

这应该让你继续前进。

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

于 2013-09-23T11:23:30.710 回答
0

如果你想要给定 book_id 的最后日期,你可以写类似

SELECT MAX(date) FROM myTable WHERE book_id = 41
于 2013-09-23T11:23:35.687 回答
-1

这就是你将如何使用 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];
于 2013-09-23T11:31:01.347 回答