【发布时间】:2021-05-18 06:44:36
【问题描述】:
我必须根据日期时间信息获取所有最旧的记录。
数据
Id | External Id | Date | Time
1 | 1000 | 2020-08-18 00:00:00 | 02:30:22
2 | 1000 | 2020-08-12 00:00:00 | 12:45:51
3 | 1556 | 2020-08-17 00:00:00 | 10:09:01
4 | 1919 | 2020-08-14 00:00:00 | 18:19:18
5 | 1919 | 2020-08-14 00:00:00 | 11:45:21
6 | 1919 | 2020-08-14 00:00:00 | 15:54:15
预期结果
Id | External Id | Date | Time
2 | 1000 | 2020-08-12 00:00:00 | 12:45:51
3 | 1556 | 2020-08-17 00:00:00 | 10:09:01
5 | 1919 | 2020-08-14 00:00:00 | 11:45:21
我目前正在这样做
SELECT *
FROM RUN AS T1
WHERE CONCAT(T1.DATE, T1.TIME) = (
SELECT MIN(CONCAT(T2.DATE, T2.TIME))
FROM RUN AS T2
WHERE T2.EXTERNAL_ID = T1.EXTERNAL_ID
)
这是正确的做法吗?
谢谢你,问候
更新 1:数据类型
DATE 列是datetime
TIME 列是varchar
【问题讨论】:
-
为什么要分开存储日期和时间?两者之一可以为空还是其他原因是什么?这两列是什么数据类型?你能告诉我们
CREATE TABLE声明吗? -
这不是我的数据库,所以我不知道...我用两列的详细信息更新了帖子
标签: sql sql-server sql-server-2012 window-functions