Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在数据库中有一个表,我想在其中获取列的最后一个值_Php_Mysql - Fatal编程技术网

Php 我在数据库中有一个表,我想在其中获取列的最后一个值

Php 我在数据库中有一个表,我想在其中获取列的最后一个值,php,mysql,Php,Mysql,表中有3列,其中有许多行。对于特定行,我必须获取列的最后一个值。因此,如何获取最后一个日期,即2013年11月10日 uid date book_id 1 18/8/2013 41 to 11/10/2013 你想要最新的日期条目吗?按降序排列(最晚日期优先),并将结果集限制为1 SELECT date FROM table ORDER BY date DESC LIMIT 1 ; 如果您的意思

表中有3列,其中有许多行。对于特定行,我必须获取列的最后一个值。因此,如何获取最后一个日期,即2013年11月10日

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

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

SELECT date FROM table ORDER BY date DESC LIMIT 1 ;
如果您的意思是在一个日期字段中有多个日期,甚至还有文本,那么您需要将数据库模式更改为:

uid |开始日期|结束日期| bookID


这会让你走的

SELECT * FROM table_name ORDER BY STR_TO_DATE(date,'%e/%c/%Y') DESC LIMIT 1;
--                                ^- the most recent date is first

如果您想要给定图书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];

问题是您将日期存储为字符串,而不是日期
11/10/2013
不是有效日期,如果不使用date_格式或其他功能,您将无法对其进行正确排序。考虑到MySQL对日期的良好本机处理,这太过分了

此外,如果要存储2个日期,请使用2列(例如
date\u start
date\u end
)。永远不要把它们合并成1


备份您的数据,将列的类型更改为DATE或DATETIME,并使用
按日期排序\u field DESC LIMIT 1

您给出的查询正在运行,但问题是它正在返回2013年9月30日的数据,但最后一个值是2013年10月11日@alasjo编辑我的答案以更好地适应您的日期格式。不过,从长远来看,@sherlock为您提供了一个更好的解决方案。感谢您的回答,它仅显示2013年10月1日。但是ans是$end_date是从db获取的日期$日期=分解(“-”,$end\u日期)$修订日期=$date\u frag[2]。“-”$date\u frag[1]。“-”$date\u frag[0];当我把它从年、月和日期改过来时,它现在显示为2013年11月10日,我希望我能知道为什么有人否决了这个答案,因为代码肯定在为你所有的答案工作。答案是$end_date是从数据库获取的日期$日期=分解(“-”,$end\u日期)$修订日期=$date\u frag[2]。“-”$date\u frag[1]。“-”$date\u frag[0];当我把它颠倒过来时,开始从年、月和最后一个日期开始。那么海报的问题是什么?他所指的“日期”是2013年8月18日到2013年10月11日。我认为这只是一种显示不同日期的方式,他想对它们进行排序。。。但在这种情况下,会出现数据库模式问题。我不确定这是否是您所需要的。。。我首先了解到您的表中有几行,其中包含
book\u id=41
的一些日期。我后来了解到,对于这一行,“日期”字段具有
18/8/2013至11/10/2013
。如果我的第二个假设是正确的,那么我的建议是错误的。