試試這個:
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條件分開評估。