获取最后一个小时、最后一个';x';SQL Server中的分钟数 订单号 选择器ID 你选的时间 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

获取最后一个小时、最后一个';x';SQL Server中的分钟数 订单号 选择器ID 你选的时间 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,sql,sql-server,sql-server-2016,sql-server-2019,sql-server-2019-express,Sql,Sql Server,Sql Server 2016,Sql Server 2019,Sql Server 2019 Express,你的时间表达式是: 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 >= DATEA

你的时间表达式是:

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

你的时间表达式是:

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

没有时间的日期被视为时间00:00.000000,因此,如果当前时间是09:23:45,则扣除1小时到08:23:45,然后请求08:23:45到00:00:00之间的数据,因为第一个值必须小于第二个值,所以没有时间的日期被视为时间00:00.000000,因此,如果当前时间是09:23:45,您扣除1小时到08:23:45,然后询问08:23:45到00:00:00之间的数据,这将不起作用,因为第一个值必须小于第二个值。我尝试了前两个表达式,它们仍然给我一个空白输出。你能解释一下第三个表达式是如何工作的吗?我试过前两个表达式,它们仍然给我一个空白输出。你能解释一下第三个表达式是如何工作的吗?