Sql 获取昨天的日期和具体时间
我有以下查询,它按小时显示CPU使用情况。然而,我想要的是显示昨天08:00到19:00之间的CPU使用情况 我离t-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
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它起作用了,但我怎么能指定时间呢。请你写一封回信好吗。