如何根据当前时间 select 仅显示最近的 6 个条目?
How to select only the most recent 6 entries based on current time?
我拥有的是达拉斯汽车站的数据库。我的目标是 select 只有最近到达的 6 辆公共汽车。我现在拥有的是 select 从午夜到现在的所有公交车到达时间。我尝试了 select Top 6 之类的东西,然后进行比较,但失败了。
此代码适用于所有时间 00:00:00 - 现在,但我想要现在之前发生的最近 6 个。
SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
谢谢!
SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
ORDER BY BaseArrive DESC OFFSET 0 ROWS FETCH NEXT 6 ROWS ONLY;
基本上获取所有行,按日期倒序排列,以获取最新的行,然后获取其中的前 6 行。
SELECT top 6 *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
Order By BaseArrive desc
编辑:我看到您提到使用前 6 名对您不起作用。这是我在这类问题中倾向于采用的解决方案,但也许如果您详细解释它的错误之处,我可以帮助您找到答案。
我拥有的是达拉斯汽车站的数据库。我的目标是 select 只有最近到达的 6 辆公共汽车。我现在拥有的是 select 从午夜到现在的所有公交车到达时间。我尝试了 select Top 6 之类的东西,然后进行比较,但失败了。
此代码适用于所有时间 00:00:00 - 现在,但我想要现在之前发生的最近 6 个。
SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
谢谢!
SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
ORDER BY BaseArrive DESC OFFSET 0 ROWS FETCH NEXT 6 ROWS ONLY;
基本上获取所有行,按日期倒序排列,以获取最新的行,然后获取其中的前 6 行。
SELECT top 6 *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
Order By BaseArrive desc
编辑:我看到您提到使用前 6 名对您不起作用。这是我在这类问题中倾向于采用的解决方案,但也许如果您详细解释它的错误之处,我可以帮助您找到答案。