Почему мои данные не фильтруют дату .. smalldatetime - PullRequest
2 голосов
/ 27 сентября 2011
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 ]

1 голос
/ 27 сентября 2011

Дай угадаю - твои свидания - варчар?Уволен.Любая причина для этой уродливой, уродливой, неэффективной и подверженной ошибкам конструкции

(CONVERT (VARCHAR, Attendance.attDate, 101) <'11 / 10/2010 ') </p>

вместо того, чтобы Attendance.attDate былобъект Date для начала?Попробуйте и посмотрите, работает ли это.

0 голосов
/ 27 сентября 2011

Attendance.attDate должен иметь тип данных datetime, и сравнение должно быть Attendance.attDate < '20101110' (ГГГГММДД), если вы хотите строки до заданного значения даты.

0 голосов
/ 27 сентября 2011

Разве вы не говорите: «дайте мне все даты меньше, чем этот день в 2010 году» (< '2/10/2010')?

Может быть, вам нужно переключиться на < на >.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...