SQL:“当天结束”选择

问题描述 投票:0回答:2

我有一个表,其中包含一些具有以下格式的日期时间的数据(我正在使用Dremio)。对于表中的所有列,我尝试仅选择给定日期的最后一个条目,例如对于日期 2023-07-18,时间为 10:30:23.537 的行。

日期和时间 参数
2023-07-31 09:37:43.143 1
2023-07-18 10:30:23.537 2
2023-07-18 10:29:55.148 3
2023-07-10 09:43:32.187 4
2023-07-10 09:43:05.171 5
2023-07-10 09:42:36.498 6

我已经尝试了SQL:选择给定日期时间的每一天的最后一条记录中提出的解决方案。

我从上面的示例中删除了 DATE 参数,因为它给出了错误。

SELECT t1.* FROM t1

INNER JOIN
(
    SELECT Date_and_time AS Date_time, MAX(Date_and_time) AS Date_time_end
    FROM t1
    GROUP BY Date_and_time
) t2
    ON t2.Date_time = t1.Date_and_time AND
       t2.Date_time_end = t1.Date_and_time
ORDER BY
    t1.Date_and_time;

不幸的是,这并没有给出结果,因为所有行都包含在结果表中。

sql datetime-format
2个回答
1
投票

这应该可以解决问题

SELECT t2.castdate,
       t1.parameter
FROM table1 t1
JOIN
  (SELECT CAST(Date_and_time AS DATE) AS 'castdate',
          max(Date_and_time) AS 'Date_and_time'
   FROM table1
   GROUP BY castdate) t2 ON t1.Date_and_time = t2.Date_and_time

查询结果在

演员日期 参数
2023-07-31 1
2023-07-18 2
2023-07-10 4

0
投票

这可能对你有帮助:

select * from table where date(Date_and_time)='2023-07-18' order by Date_and_time desc limit 1
© www.soinside.com 2019 - 2024. All rights reserved.