Sql 获取昨天的日期和具体时间

Sql 获取昨天的日期和具体时间,sql,sql-server,Sql,Sql Server,我有以下查询,它按小时显示CPU使用情况。然而,我想要的是显示昨天08:00到19:00之间的CPU使用情况 我离t-SQL真的很远,我需要你的帮助 DECLARE @ts BIGINT; SELECT @ts =(SELECT cpu_ticks/(cpu_ticks/ms_ticks) FROM sys.dm_os_sys_info); SELECT DATEADD(ms,-60 *(@ts - [timestamp]),GETDATE()) AS [EventDate

我有以下查询,它按小时显示CPU使用情况。然而,我想要的是显示昨天08:00到19:00之间的CPU使用情况

我离t-SQL真的很远,我需要你的帮助

DECLARE @ts BIGINT;
SELECT @ts =(SELECT cpu_ticks/(cpu_ticks/ms_ticks) FROM sys.dm_os_sys_info);

SELECT 
         DATEADD(ms,-60 *(@ts - [timestamp]),GETDATE()) AS [EventDate] ,
        100 - SystemIdle - SQLProcessUtilization AS [Total(%)], 
        SQLProcessUtilization AS [SQL Server(%)]
FROM (SELECT record.value('(./Record/@id)[1]','int')AS record_id, 
record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]','int')AS [SystemIdle], 
record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]','int')AS [SQLProcessUtilization], 
[timestamp]      
FROM (SELECT[timestamp], convert(xml, record) AS [record]             
FROM sys.dm_os_ring_buffers             
WHERE ring_buffer_type =N'RING_BUFFER_SCHEDULER_MONITOR'AND record LIKE'%%')AS x )AS y 
where [EventDate]  > dateadd(day,-1, getdate())  -- Throws an error like 'EventDate Invalid Column'
ORDER BY record_id DESC; 

您的查询相当长且复杂,因此我没有针对上述内容进行调整,但这可能有助于您获得所需的答案。只需运行以下命令:

DECLARE @startTime AS DATETIME;
DECLARE @endTime AS DATETIME;    

SET @startTime = DATEADD(
                     HOUR ,
                     8 ,
                     CAST(CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS DATETIME));
SET @endTime = DATEADD(
                     HOUR ,
                     19 ,
                     CAST(CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS DATETIME));

-- check the values    
SELECT @startTime AS startTime ,
       @endTime AS endTime;

-- filter your query - edit the below with your table(s)
SELECT * 
FROM yourTable AS
WHERE yourDate >= @startTime AND yourDate <= @endTime

注意:只需注释掉最终选择,即可查看其生成的值。

您的查询非常长且复杂,因此我没有针对上述内容进行调整,但这可能有助于您获得所需的答案。只需运行以下命令:

DECLARE @startTime AS DATETIME;
DECLARE @endTime AS DATETIME;    

SET @startTime = DATEADD(
                     HOUR ,
                     8 ,
                     CAST(CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS DATETIME));
SET @endTime = DATEADD(
                     HOUR ,
                     19 ,
                     CAST(CAST(DATEADD(DAY, -1, GETDATE()) AS DATE) AS DATETIME));

-- check the values    
SELECT @startTime AS startTime ,
       @endTime AS endTime;

-- filter your query - edit the below with your table(s)
SELECT * 
FROM yourTable AS
WHERE yourDate >= @startTime AND yourDate <= @endTime

注意:只需注释掉最后的选择,即可查看它生成的值。

-抛出类似“EventDate无效列”的错误-将EventDate更改为DATEADDms,-60*@ts-[timestamp],GETDATE@yes它起作用了,但我怎么能指定时间呢。请写下作为答案。-引发类似“EventDate无效列”的错误-将EventDate更改为DATEADDms,-60*@ts-[timestamp],GETDATE@yes它起作用了,但我怎么能指定时间呢。请你写一封回信好吗。