获取 SQL 服务器中最后一小时、最后 'x' 分钟的行

Get rows of Last hour, Last 'x' minutes in SQL Server

Order ID Picker 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 下午。我想要 return 前两行(最后一小时的行)。

请帮助我找到最后 'x' 分钟的详细信息(如果有的话)。

PS:我定期从 SQL 服务器访问此数据,我正在尝试使其成为动态的。

如有任何帮助,我们将不胜感激。提前致谢。

你的时间表达是:

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())