如何根据当前时间仅选择最近的6个条目?

时间:2015-03-27 19:56:09

标签: sql time

我所拥有的是达拉斯巴士站的数据库。我的目标是只选择最近到达的6辆公交车。我现在所拥有的将从午夜到现在选择所有巴士到达时间。我尝试了选择Top 6,然后进行比较,但失败了。

此代码适用于所有时间00:00:00 - 现在,但我希望最近6次发生在NOW之前。

SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))

谢谢!

2 个答案:

答案 0 :(得分:0)

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行。

答案 1 :(得分:0)

SELECT top 6 *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
Order By BaseArrive desc

编辑:我看到你提到使用前6名并不适合你。这是我在这类问题中倾向于采用的解决方案,但也许如果你更多地解释它的错误,我可以帮助指导你找到答案。