2012-11-07 113 views
0

我正在使用查詢爲我們的第三班人員提取報告。使用DATEPART for AM正常工作,但不適用於PM查詢

我剛注意到報告寄出0個結果時的問題是我現在已經設定了從第二天早上6點到5點59分運行。由於我的日期欄位爲GETDATE,因此它沒有看到前一天晚上的結果(1800-2359)。我正在考慮從-12小時這樣拉,但可以隨時按下按鈕查看結果。

因此,如果他們在輪班結束前推送它,它會顯示一些輪班條目。我希望它只能在第二天早上從1800-0559運行,不管在午夜之前或午夜之後按下按鈕。我希望這是有道理的。我甚至不確定它們是否在2359命中後能夠進入00.我將它內置到VB.net應用程序中,他們可以隨時按下按鈕以獲得結果。這是爲了讓管理層跟蹤正在做什麼,因爲員工需要在問題發生時實時輸入數據。

感謝您的任何幫助。希望我有足夠的道理! :d

SELECT 
    Assignment, Datemodified, General, 
    IncNumber, NextSteps, PDCRStatus, 
    RootCause, Status, Summary, 
    Timings, UserID 
FROM 
    Turnover 
WHERE DATEPART(HOUR, datemodified) between 18 and 05 
AND CONVERT(NVARCHAR(50),datemodified,103) = CONVERT(NVARCHAR(50),GETDATE(),103); 
+2

數字如何可以大於(或等於)18並且小於(或等於)5? – hvd

回答

0

當你正在檢查一個特定的時間範圍內我想,日期切換的時間,即1800個小時,一天到下0500小時。 我看到您的查詢僅檢查時間,但未考慮日期。 我想如果你可以一起檢查日期和時間,它應該工作。 截至目前,我沒有在我的機器上的SQL服務器,否則會幫助你與示例查詢。

乾杯, 希望它有幫助!

+0

這個日期被認爲是= GETDATE,但是如果我的查詢是在2359之後運行的,它會給出任何結果,因爲它只查看該日期,而不是從前一日期開始的6個小時。 – user1800374

0

我假設你想要從昨天18:00開始的所有數據。

SELECT 
    Assignment, Datemodified, General, 
    IncNumber, NextSteps, PDCRStatus, 
    RootCause, Status, Summary, 
    Timings, UserID 
FROM 
    Turnover 
WHERE datemodified >= dateadd(HH,-6,convert(datetime,convert(date,GETDATE()))) 

我使用getdate獲取當前日期時間並提取當天。當它轉換回日期時間我有00:00,所以我用dateadd減去6小時,因此選擇昨天18:00。但我不知道這應該如何在某些時間表現。它會一直到昨天18:00,這意味着當你在23:59開始時,你會看到29小時59分鐘的時間間隔。當在00:00開始時,你會看到6個小時。

相關問題