Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите в чем дело почему в запросе отображается заказ продавца за одни день а не за неделю

ITBR Ученик (19), закрыт 1 месяц назад
  SELECT Заказы.* 
FROM Заказы
JOIN Продавцы ON Заказы.ПродавецID = Продавцы.ID
WHERE Продавцы.ФИО = 'Иванов Иван Иванович'
AND DATEPART(week, Заказы.Дата) = DATEPART(week, GETDATE())
AND DATEPART(year, Заказы.Дата) = DATEPART(year, GETDATE())
Заказы указанного продавца в течение текущей недели.
Почему получается результат такой: таблица заказы заполнена так
Лучший ответ
Папа Высший разум (144970) 2 месяца назад
Потому что запрос фильтрует за календарную неделю. А она как раз началась с 30-го сентября с.г. (ну или с 29-го, если рассматривать библейскую неделю, которая принята в США и некоторых других странах). Хочешь искать за последние 7 дней - бери дату в днях и считай > "текущий день минус 7". И дни должны быть сквозными, откуда они там начинаются в БД, а не от начала года, иначе в первые 6 дней января это работать не будет.
ITBRУченик (19) 2 месяца назад
SELECT Заказы.*
FROM Заказы
JOIN Продавцы ON Заказы.ПродавецID = Продавцы.ID
WHERE Продавцы.ФИО = 'Иванов Иван Иванович'
AND DATEDIFF(DAY, Заказы.Дата, GETDATE()) <= 7;
так будет правильно?
Папа Высший разум (144970) ITBR, ну, мне казалось, что надо < 7, а в остальном - правильно.
Остальные ответы
Похожие вопросы