SQL用于此转换

本文关键字:转换 用于 SQL | 更新日期: 2023-09-27 18:24:41

下面的查询从运行查询之日的凌晨4点开始获取数据,直到现在。

问题是,我还需要在第二天凌晨2点运行查询(以返回从前一天凌晨4点到现在的数据)-因此,查询不再有效,因为它查询的日期不对-也就是说,我总是希望查询的开始时间为当天凌晨4点,除非查询在上午12点到凌晨2点之间运行-我希望开始日期为前一天的凌晨4点。

我在winform c#程序的应用程序配置文件中有查询。如果不以编程方式发送日偏移量,是否可以修改查询以满足我的需求?

SELECT * 
FROM [TraceData].[dbo].[ActiveData2] 
where Timestamp  >= CAST(GETDATE()-0 AS DATE) + CAST('04:00:00' AS DATETIME)  
order by Timestamp DESC

SQL用于此转换

这似乎是你想要的:

SELECT * 
FROM [TraceData].[dbo].[ActiveData2] 
where Timestamp  >= CASE 
    WHEN CAST(CURRENT_TIMESTAMP AS TIME) BETWEEN CAST('00:00:00' AS TIME) AND CAST('02:00:00' AS TIME)
    THEN CAST(GETDATE()-0 AS DATE) + CAST('04:00:00' AS DATETIME) 
    ELSE CAST(GETDATE()-1 AS DATE) + CAST('04:00:00' AS DATETIME)
order by Timestamp DESC

然而,在凌晨2点到4点之间,您将尝试返回未来的数据。不确定这是否是你想要的。。。