我所拥有的是达拉斯巴士站的数据库。我的目标是只选择最近到达的6辆公交车。我现在所拥有的将从午夜到现在选择所有巴士到达时间。我尝试了选择Top 6,然后进行比较,但失败了。
此代码适用于所有时间00:00:00 - 现在,但我希望最近6次发生在NOW之前。
SELECT *
FROM dbo.BusSchedule
WHERE DATEPART(HH,BaseArrive) < DATEPART(HH,CONVERT(time, getdate()))
谢谢!
答案 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名并不适合你。这是我在这类问题中倾向于采用的解决方案,但也许如果你更多地解释它的错误,我可以帮助指导你找到答案。