我在表中有3列,其中有很多行。对于特定的行,我必须得到列的最后一个值。所以如何得到最后一个日期是11/10/2013。
uid date book_id
1 18/8/2013 41
to
11/10/2013
答案 0 :(得分:1)
您想要最新的日期条目吗?将其降序排序(最新日期优先)并将结果集限制为1.
SELECT date FROM table ORDER BY date DESC LIMIT 1 ;
如果你真的意味着你在一个日期字段中有几个日期甚至文本,那么你需要将数据库模式更改为:
uid | startDate | endDate | BOOKID
答案 1 :(得分:1)
问题是您将日期存储为字符串,而不是日期。 11/10/2013
不是有效日期,如果不使用DATE_FORMAT或其他功能,您将无法正确排序。鉴于MySQL对日期的精细原生处理,这太过分了。
此外,如果您要存储2个日期,请使用2列(例如date_start
和date_end
)。切勿将它们合并为1。
备份您的数据,将列的类型更改为DATE或DATETIME并使用ORDER BY date_field DESC LIMIT 1
。
答案 2 :(得分: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
答案 3 :(得分:0)
如果您想要给定book_id的最后日期,可以编写类似
的内容SELECT MAX(date) FROM myTable WHERE book_id = 41
答案 4 :(得分:-1)
这就是你在php中使用mysql
的方法 $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];