如何获取当前时间戳的纬度和经度?

时间:2018-11-10 13:53:05

标签: mysql phpmyadmin

我有一个数据库,其中包含时间戳及其对应的纬度和经度的列表。我正在尝试获取数据库中最新时间戳的经度和纬度。在这里,我可以获取最新的时间戳,但是我的纬度和经度不会更新,并且始终返回第一个时间戳的值。如何获得最新时间戳的返回值?

 SELECT delivery.vehicle_id, max(timestamp), latitude, longitude from test
 inner join delivery on delivery.vehicle_id = test.vehicle_id
 where DATE_FORMAT(timestamp,'%H:%i:%s') <= 
 DATE_FORMAT(CURRENT_TIMESTAMP,'%H:%i:%s') 
 group by delivery.vehicle_id

所需的输出:例如,车辆ID 4034的最新时间戳是13:20,车辆ID的最新时间戳是13:05,因此对于车辆ID 4034和车辆ID 4035,它应分别获得纬度= 22.29098和经度= 114.199942。纬度= 22.279973,经度= 114.188513。输出的所有车辆(不仅仅是一辆车)的输出都必须是最新的纬度和经度。

 delivery table
 vehicle_id    start_time       end_time
 4034          11/1/2014 9:00   11/1/2014 17:00
 4035          11/1/2014 8:00   11/1/2014 16:00

 test table
 timestamp      vehicle_id     latitude      longitude
 11/1/2014 0:00     4034        22.283861   114.146215
 11/1/2014 3:59     4034        22.292902   114.200619
 11/1/2014 8:49     4034        22.28557    114.192797
 11/1/2014 13:20    4034        22.29098    114.199942
 11/1/2014 13:23    4034        22.290495   114.196016
 11/1/2014 0:08     4035        22.293131   114.200671
 11/1/2014 6:02     4035        22.293043   114.200737
 11/1/2014 9:35     4035        22.278188   114.153437
 11/1/2014 13:05    4035        22.279973   114.188513
 11/1/2014 14:33    4035        22.277418   114.17543

1 个答案:

答案 0 :(得分:1)

对于这种方法,您首先需要为每个vehicle_id制作一个带有最新时间戳的子查询,然后将该子查询加入适当的列以获取其余信息( ie ,相关的纬度和经度):

SELECT
    t.vehicle_id,
    t.timestamp,
    t.latitude,
    t.longitude
FROM
    test AS t
INNER JOIN
    (SELECT
         vehicle_id, MAX(timestamp) AS maxT
     FROM
         test
     GROUP BY
         vehicle_id) AS max_log ON max_log.vehicle_id = t.vehicle_id
                                AND max_log.maxT = t.timestamp

注意,只有在将时间戳数据标准化后(如在下一个示例中),或者如果您使用以下可用的MySQL类型之一,此方法才有效:DATETIME or TIMESTAMP

test table
timestamp         vehicle_id  latitude    longitude
11/01/2014 00:00  4034        22.283861   114.146215
11/01/2014 03:59  4034        22.292902   114.200619
11/01/2014 08:49  4034        22.28557    114.192797
11/01/2014 13:20  4034        22.29098    114.199942
11/01/2014 13:23  4034        22.290495   114.196016
11/01/2014 00:08  4035        22.293131   114.200671
11/01/2014 06:02  4035        22.293043   114.200737
11/01/2014 09:35  4035        22.278188   114.153437
11/01/2014 13:05  4035        22.279973   114.188513
11/01/2014 14:33  4035        22.277418   114.17543

您可以在下一个链接上浏览一个有效的示例:

DB Fiddle Example

相关问题