2013-04-25 70 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