为什么我的数据不会过滤日期.. smalldatetime

时间:2011-09-27 06:37:18

标签: sql database sql-server-2005

SELECT S.studentID, S.studentFName, S.DOB, S.studentEMail, S.studentAddress
FROM Student AS S RIGHT OUTER JOIN
(SELECT Attendance.studentID, COUNT(*) AS cnt FROM Attendance CROSS JOIN
CourseUnit WHERE (Attendance.attStatus = 'Yes') AND (CourseUnit.courseCode = 'S3000') AND (CONVERT(VARCHAR, Attendance.attDate, 101) < '11/10/2010') GROUP BY Attendance.studentID
HAVING (COUNT(*) < 5)) AS A ON A.studentID = S.studentID

attDate外,一切正常。我在2010年没有任何记录,它仍然会带来所有这些记录?

3 个答案:

答案 0 :(得分:1)

让我猜一下 - 你的日期是varchar?被解雇。任何丑陋丑陋丑陋的不可思议和容易出错的构造的原因

(CONVERT(VARCHAR,Attendance.attDate,101)&lt; '11 / 10/2010')

而不是Attendance.attDate是一个Date对象开始?试试看,看看是否有效。

答案 1 :(得分:0)

你不是说“给我所有的日期都比2010年的这一天少”(< '2/10/2010')吗?

也许您需要将<切换为>

答案 2 :(得分:0)

Attendance.attDate应为数据类型datetime,如果您希望行在给定日期值之前,则比较应为Attendance.attDate < '20101110'(YYYYMMDD)。