2014-12-05 58 views
0

僅在今天的日期才需要獲取指定的記錄(其中結果爲通過且結果爲失敗)。這樣做的最好方法是什麼?僅爲今天獲取指定記錄sql

SELECT 
    A.EmployeeNumber, 
    A.Result, 
    FROM AssessmentData A 
WHERE A.Result = 'PASS' OR A.Result = 'FAIL' AND A.TrainingStartDate = GETDATE() 

以上是還沒有應用

親切的問候

回答

2

試試這個:

SELECT 
    A.EmployeeNumber, 
    A.Result 
FROM AssessmentData A 
WHERE A.Result IN ('PASS','FAIL') 
     AND A.TrainingStartDate >= dateadd(Day, DateDiff(Day, 0, GetDate()), 0) 
     And A.TrainingStartDate < dateadd(Day, DateDiff(Day, 0, GetDate()), 1) 

這裏有幾個問題。 GetDate()返回日期和時間,所以...除非培訓開始日期將當前日期和時間與毫秒相匹配,否則您將無法獲取數據。

另外,在where子句中將AND與OR混合時要小心。操作順序非常重要,因此您應該始終使用括號。請注意,我將您的狀況改爲IN狀態。以下查詢與我已發佈的查詢相同。

SELECT 
    A.EmployeeNumber, 
    A.Result 
FROM AssessmentData A 
WHERE (A.Result = 'PASS' or A.Result = 'FAIL') 
     AND A.TrainingStartDate >= dateadd(Day, DateDiff(Day, 0, GetDate()), 0) 
     And A.TrainingStartDate < dateadd(Day, DateDiff(Day, 0, GetDate()), 1) 

注意上面的代碼中的括號。它迫使OR'd條件與其他AND條件分開評估。