2012-06-26 3 views
0

Этот запрос предназначен для получения данных студентов, созданных в определенный день. Однако, если я нахожу 15 для @NumberOfDays, он возвращает данные за 15 дней и 14 дней, и если я вхожу 20, на этот раз он приносит 19 и 20 дней данных. Может ли кто-нибудь помочь мне с моим запросом, пожалуйста? Я не знаю, что я делаю неправильно.С моим запросом что-то не так? (DATEDIFF)

SELECT TOP 10 S.Id, S.Name, S.Surname, S.DateCreated 
FROM STUDENT S WITH(NOLOCK) 
WHERE DATEDIFF(day, CAST(S.DateCreated AS date), CAST(GETDATE() AS date)) = @NumberOfDays 
+0

Я не вижу ничего плохого в том, что - вы можете опубликовать некоторые примеры DateCreated - Я заметил, что вы бросаете его на дату, которая наводит на мысль, что это уже не свидание ... Вы также Дон» t нужно отдать GetDate на дату - он уже возвращает дату – BonyT

+1

Получаете ли вы все записи, созданные на 14-м, соответственно. 19-й день, или только часть из них? Я думаю, что это может быть какая-то проблема с часовым поясом. –

+0

Причина, по которой я использую значение, - это только сравнить день, месяц и год. если я его брошу, он в основном удаляет временную часть значения времени даты. –

ответ

0

С этим запросом, он, наконец, работает!

SELECT TOP 10 S.Id, S.Name, S.Surname, S.DateCreated 
FROM STUDENT S WITH(NOLOCK) 
WHERE CAST(S.DateCreated AS DATE) = CAST(DATEADD(DAY, [email protected], GETDATE()) AS DATE) 
+0

благодарит всех, кто постарался ответить на этот вопрос. –

0
SELECT TOP 10 S.Id, S.Name, S.Surname, S.DateCreated 
FROM STUDENT S WITH(NOLOCK) 
WHERE DATEDIFF(day, CAST(S.DateCreated AS date), CAST(GETDATE() AS date)) 
Between @NumberOfDays-1 and @NumberOfDays 
+0

Благодарю вас за ответ, я не проголосовал за ваш ответ. что вы написали, гарантирует возвращение 13 дней, 14 и 15, если я введу 15 для NumberOfDays –

+0

r u, сравнивая 14-й и 15-й числа текущего месяца? – Asif

+0

Я думаю, что проблема OP такова: они вводят '15', ожидая дат, которые на 15 дней отличаются от сегодняшнего дня, но они получают даты, которые на 15 * и 14 * дней друг от друга. Ваше предложение, похоже, ухудшает ситуацию * также * вводя дни, которые на 13 дней отличаются от сегодняшнего дня. (И я тоже не ответил на ваш ответ.) –

Смежные вопросы