试试这个:
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条件分开评估。