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)
示例数据:
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)