SQL: 同一天不同时间记录

SQL: Records on same day but different time

示例数据:

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条记录下来,因为它是一个重复的日期,但时间较晚。

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

这将显示特定日期后 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)

希望这对您有所帮助..

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

如果你想每天 select 1 行,你可以使用 ROW_NUMBER() 而不是 RANK()

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