SQL Server动态查询每天八点到第二天八点的数据
时间: 2024-09-10 11:07:26 浏览: 47
SQL Server误区30日谈 第16天 数据的损坏和修复
SQL Server 中可以使用窗口函数 `DATEADD` 和 `DATEDIFF` 结合动态SQL来查询每天八点到第二天八点的数据。这里有一个基本的例子:
```sql
DECLARE @StartDate datetime = DATEADD(hour, -8, GETUTCDATE()) -- 获取前一天晚上8点
DECLARE @EndDate datetime = DATEADD(day, 1, @StartDate) -- 昨天晚上8点到今天晚上8点
DECLARE @Query nvarchar(MAX) =
'SELECT * FROM your_table '
+ 'WHERE your_date_column BETWEEN @StartDate AND @EndDate';
EXEC sp_executesql @Query, N'@StartDate datetime, @EndDate datetime', @StartDate = @StartDate, @EndDate = @EndDate;
```
在这个例子中,`your_table` 需替换为你实际的表名,`your_date_column` 是包含日期时间信息的列名。`sp_executesql` 是用于执行动态SQL的存储过程。
注意,这个查询会获取昨天晚8点到今天的早8点的数据,如果你想查询的是连续的一整天,你需要调整 `@StartDate` 和 `@EndDate` 的计算方式。
阅读全文