php - 如何选择具有最新时间戳的记录

标签 php mysql datetime

我就是想不通这个问题。我有一个表如下:

路由日志表

id          pro     trailer     arrival_date    arrival_time
-------     ------- ---------   ------------    ------------
1           55      691995      2018-04-04      23:50:00    
2           59      691995      2018-03-15      23:22:00    
3           47      691995      2018-04-02      23:23:00    
4           66      691995      2018-04-05      07:00:00    
5           577     691995      2018-04-02      23:50:00

我想要的是通过连接日期和时间来获得最新的记录 ID。我知道我必须使用 max,但这很奇怪。如果我运行以下查询,我确实获得了最大日期,但没有获得与 MAX 匹配的预期记录 ID。

SELECT
   routeLogTbl.pro,
   MAX( TIMESTAMP( routeLogTbl.arrival_date, routeLogTbl.arrival_time ) ) AS DelTimeDate 
FROM
   routeLogTbl 
WHERE
   routeLogTbl.trailer = 691995 
GROUP BY
   routeLogTbl.trailer

最佳答案

使用子查询获取日期/时间的极值,然后使用连接条件检索详细记录,是执行此操作的标准方法。 (http://sqlfiddle.com/#!9/4d588b/1/0)

SELECT detail.*
  FROM tbl detail
  JOIN ( 
         SELECT MAX(TIMESTAMP( arrival_date, arrival_time)) arrival_datetime,
                trailer
           FROM tbl
          GROUP BY trailer
       ) m   ON detail.trailer=m.trailer
            AND TIMESTAMP( arrival_date, arrival_time) = arrival_datetime

这将为 trailer 的每个不同值在结果集中提供一行。

关于php - 如何选择具有最新时间戳的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49617748/

相关文章:

php - 7 fetch_assoc 一会儿 fetch_assoc

javascript - 如何在 c3js 图表中动态更改 x 轴日期格式?

c++ - 如何修复: "MySQL_Prepared_ResultSet::getInt: invalid value of ' columnIndex"

asp.net-mvc - MVC ModelMetaData 属性和格式化日期的问题

java - 如何使用java8设置工作日

javascript - 在一个网页上显示多个 Google map "Store Locators"

MySQL 按连续值和计数分组

mysql - Joomla Jdatabase select 语句不工作

python-3.x - pandas - 增加日期时间时间(更多信息在文章中。)

带有 phantomjs 的 PHP 屏幕截图