2013-04-25 46 views
0

我正在创建SQL报告以查询来自NetBackup OpsCenter数据库的结果(MySQL?) 我正在学习如何使用SQL,因此请原谅我的无知。我如何过滤昨天(不是最后24小时)并在我的标题中显示昨天的日期?

我在下面创建的报告显示了前一天的失败(与之前的24小时相反,每次运行都会有所不同)。

SELECT (GETDATE()-1) AS 'Date', statusCode AS STATUS, COUNT(*) AS COUNT 

FROM domain_JobArchive 

WHERE DATEDIFF(day, UtcBigIntToNomTime(endTime), GETDATE()) =1 
and masterServerId=59 

GROUP BY statusCode; 

我想改变这个,所以它报告日期被用作标题...不是它自己的列。

电流输出: Count of errors for yesterday (non-PCI)

Date STATUS COUNT Apr 24, 2013 11:43:10 AM 288 1 Apr 24, 2013 11:43:10 AM 0 6861 Apr 24, 2013 11:43:10 AM 1 52 Apr 24, 2013 11:43:10 AM 6 63 Apr 24, 2013 11:43:10 AM 50 1 Apr 24, 2013 11:43:10 AM 58 2 Apr 24, 2013 11:43:10 AM 191 1 Total 7 Rows , 1 Page(s)

所需的输出: Count of errors for Apr 24, 2013 (non-PCI)

STATUS COUNT 0 6861 1 52 6 63 50 1 58 2 191 1 288 1 Total 7 Rows , 1 Page(s)

这样,每次执行时间 - 它拉起来完全相同的数据。

如果从昨天上午7点开始到今天上午7点,无论何时执行,情况会更好。

回答

0

我认为这应该工作。从日期时间减去7小时,然后将其与昨天的日期进行比较。您可以从SELECT语句中删除日期。这不是必需的。

SELECT statusCode AS STATUS, COUNT(*) AS COUNT 

FROM domain_JobArchive 

WHERE DATE(DATE_SUB(UtcBigIntToNomTime(endTime), INTERVAL 7 HOUR)) = DATE_SUB(curdate(), INTERVAL 1 DAY) 
and masterServerId=59 

GROUP BY statusCode; 
+0

哎呀,编辑了几次。 – Tom 2013-04-25 19:19:53

+0

进一步测试之后...会出现我的原始查询工作正常,因为它正在检查所有记录的日期只有(1)不同。 DATEDIFF(day,UtcBigIntToNomTime(endTime),GETDATE())= 1 – user2316707 2013-04-26 16:35:31

+0

好。如果您想使用上午7:00至上午7:00的范围,则可以按照上述方法从日期减去7小时。 – Tom 2013-04-26 16:52:54