SQL:在同一天但不同时间记录

时间:2015-10-23 02:29:23

标签: sql oracle oracle-sqldeveloper

示例数据:

2015-10-09 17:06:54
2015-01-05 11:04:12
2015-01-05 11:04:13
2015-01-09 14:52:19

嗨,我正在尝试使用条件获取日期+时间记录列表:如果日期相同,请获取最早的记录。

我知道这可以通过substr()轻松完成到日期,但我也需要时间。

请参阅上面的数据:我不希望第3条记录失效,因为它是重复的日期,但是以后的时间。

我该怎么做?非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

MS SQL 2005+中,您可以尝试:

SELECT *
FROM (
   SELECT *,
      RANK() OVER(PARTITION BY CAST(DateTime_Column AS DATE) ORDER BY DateTime_Column DESC) AS R
   FROM Your_Table) AS Tb
WHERE R = 1

如果您想每天选择1行,可以使用ROW_NUMBER()代替RANK()

在Oracle中,您可以将CAST(DateTime_Column AS DATE)更改为TRUNC(DateTime_Column)

答案 1 :(得分:0)

这将显示特定日期的后期date_time行。

SELECT T1.*
    FROM 
        table T1 INNER JOIN table T2 
         ON  DATE(T1.date_time) = DATE(T2.date_time)
         AND T1.date_time > T2.date_time GROUP BY DATE(T1.date_time)

希望这会有所帮助..