0
订单编号 选取器 ID Time_Picked
1 111 2020-01-13 11:28:00
2 222 2020-01-13 11:40:00
3 333 2020-01-13 10:00:00
4 444 2020-01-13 9:00:00
5 555 2020-01-13 9:45:00
SELECT *
    FROM mytable
    WHERE Time_picked BETWEEN DATEADD(HOUR, -1, GETDATE()) AND CAST(GETDATE() AS DATE)

我在我的 SQL Server 2016 中得到一个空白输出。

现在考虑的时间是下午 12:00。我想返回前两行(最后一小时行)。

如果有的话,请帮助我查找最后“x”分钟的详细信息。

PS:我经常从 SQL Server 访问这些数据,并且正在尝试使其成为动态的。

任何帮助,将不胜感激。提前致谢。

4

1 回答 1

2

你的时间表达是:

WHERE Time_picked BETWEEN DATEADD(HOUR, -1, GETDATE()) AND CAST(GETDATE() AS DATE)

在大多数情况下,第一个会第二个大,因为它CAST()删除了时间分量。我怀疑你想要:

WHERE Time_picked BETWEEN DATEADD(HOUR, -1, GETDATE()) AND GETDATE()

或者假设所有时间值都是过去的:

WHERE Time_picked >= DATEADD(HOUR, -1, GETDATE())
于 2021-03-31T00:14:15.437 回答