2014-12-22 5 views
0

Мне нужно запустить еженедельный отчет на основе даты прибытия. Как установить дату прибытия в предложении where, чтобы я мог получить результат только каждую неделю. Жесткая часть: я НЕ хочу изменять даты каждую неделю. Мне нужно постоянное место, где указано, на дату. Я должен предоставить список клиентов, которые прибыли каждую неделю, и я просто хочу запустить тот же скрипт, не меняя даты недели.Дата выпуска SQL для недельных данных отчета

Пожалуйста, помогите. Спасибо.

+0

Google для GETDATE и DATEDIFF –

ответ

1
SELECT * FROM TABLE WHERE 
(ARRIVAL_DATE>DATEFROMPARTS(YEAR(GETDATE()-7), MONTH(GETDATE()-7), DAY(GETDATE()-7)))//7 days before starting at midnight 
AND 
(ARRIVAL_DATE<DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), DAY(GETDATE()))) //NOW in the YYYY, MM,DD format 
+0

Я интересно, если Мне нужно включить «ARRIVAL_DATE Bulbul

+0

, если вы уверены, что все даты прибытия в вашей БД находятся в прошлом, тогда нет – Gabriel

+0

Я пробовал это, и он печатает записи на текущий день. Пример: я хочу печатать записи с 18 декабря по 25 декабря, которые будут на одну неделю. Тем не менее, он печатает записи и для 26 декабря. Не могли бы вы помочь? Благодарю. – Bulbul

0

Это позволит получить все, что происходило в текущем календарном неделю (пн-вс)

SELECT * FROM Table1 
WHERE ArrivalDate BETWEEN 
CAST(DATEADD(dd,(((DATEPART(dw,getdate())[email protected]@DATEFIRST) % 7)+5) % 7 ,getdate()) as date) AND 
CAST(DATEADD(dd,6+((((DATEPART(dw,getdate())[email protected]@DATEFIRST) % 7)+5) % 7),getdate()) as date) 

Edit - Убран дополнительный Е в МЕЖДУ

+0

Выражение небулевого типа, указанное в контексте, где ожидается условие, рядом с «BETWEEEN». Msg 102, уровень 15, состояние 1, строка 8 Неправильный синтаксис около 'DATEPART'. Msg 102, Level 15, State 1, Line 9 Неверный синтаксис рядом с 'DATEPART'. – Bulbul

+0

Исправлено. Имел опечатку – LeeG

+0

Спасибо Ли. Код Габриэля работал так, что я использую это. – Bulbul

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