从日期时间结果集中获取最大日期时间

问题描述 投票:-1回答:2

我有以下查询,

SELECT  startTime, lat, lon
FROM table
WHERE category = 12 
AND playerId = 10 
AND CAST(startTime as date) >= (select max(CAST(startTime as date)) from table) 

逻辑是最后(最大)日期取经度,经度。所以,今天所有的一切。问题是我得到了一组结果,因为最大日期是

10-7-2019 00:00:00 52.521 113.658
10-7-2019 00:10:00 42.521 103.658 
10-7-2019 00:20:00 22.521 93.658 
etc...

((由于同一天的时间不同,我在相同的最大日期获得了很多结果。我没有得到仅一行)

如何从以上设置中获取最大值?我必须做类似

的事情
AND CAST(startTime as time) >= (select max(CAST(startTime as time)) from table) 

在结果集上获得10-7-2019 23:59:59 22.521 93.658。我不知道该怎么做。有点像

SELECT  time, lat, lon
FROM table
WHERE category = 12 
AND playerId = 10 
AND CAST(startTime as date) AS ABC >= (select max(CAST(startTime as date)) from table) 
AND CAST(startTime as time) >= (select max(CAST(startTime as time)) from ABC)

谢谢

sql datetime max
2个回答
0
投票

您可以只使用order bylimit吗?

SELECT startTime, lat, lon
FROM table
WHERE category = 12 AND playerId = 10 
ORDER BY startTime DESC
LIMIT 1;

如果只想在数据的最后一个日期得到结果(整体),则可以使用子查询或窗口函数:

SELECT startTime, lat, lon
FROM (SELECT t.*,
             DENSE_RANK() OVER (PARTITION BY date(startTime) DESC) as seqnum
      FROM table t
     ) t
WHERE category = 12 AND playerId = 10 AND
      seqnum = 1
ORDER BY startTime DESC
LIMIT 1;

0
投票

您能试试这个吗..

SELECT  startTime, lat, lon
FROM table
WHERE category = 12 
  AND playerId = 10 
  AND CAST(startTime as datetime) >= (select max(CAST(startTime as datetime)) from table)

例如。。

SELECT  Max(Cast(CreatedOn as datetime))
from TimeSheetJob

结果:-

2019-10-04 15:52:29.080 
© www.soinside.com 2019 - 2024. All rights reserved.