Tomiko Ответов: 4

Получите последние 10 дней перед столбцом "orderdate"


Привет ребята,

Я пытаюсь выбрать get the last 10 days before the column 'orderdate' в моей таблице.
Как я могу сделать запрос select, чтобы получить его ?

Спасибо Вам за вашу помощь

Что я уже пробовал:

Hello guys,

I'm trying to select get the last 10 days before the column 'orderdate' in my table. 
How can I make a select query to get it ?

Thank you for your help

4 Ответов

Рейтинг:
2

Tomiko

Спасибо ребята,
Но я хочу получить максимальную дату из своего стола и вернуться с этого максимального дня(последнего дня в моем столе) на 10 дней назад.

Спасибо


Maciej Los

Это не ответ. Пожалуйста, удалите его, чтобы избежать голосования вниз.

Рейтинг:
1

OriginalGriff

Попробуй:

SELECT ... WHERE DATEDIFF(day, orderdate, GETDATE()) <= 10


Maciej Los

5ed!

Richard Deeming

Но это не Саргабль. :)

Наверное, лучше рассчитать диапазон дат и использовать BETWEEN как и Мацей.

Рейтинг:
0

Maciej Los

Альтернативно, вы можете использовать МЕЖДУ.. И...[^]

Использование:

DECLARE @md DATE = CONVERT(DATE, GETDATE()) -- initial value

SELECT @md = MAX(orderdate) FROM YourTable --get max of orderdate

SELECT ...
FROM YourTable
WHERE orderdate BETWEEN DATEADD(DD, -10, @md) AND @md


[EDIT]ответ был улучшен в соответствии с предложением Ричарда.[/РЕДАКТИРОВАТЬ]


Tomiko

Спасибо ребята,
Но я хочу получить максимальную дату из своего стола и вернуться с этого максимального дня(последнего дня в моем столе) на 10 дней назад.

Спасибо

Maciej Los

См. обновленный ответ.

Richard Deeming

Почти идеальный. :)

Вы можете удалить CONVERT в столбце дата, так как (например) 2020-03-22T15:00:00 будет между ними 2020-03-22T00:00:00 и 2020-04-01T00:00:00 даже если вы не сокращаете время.

Тогда ваш запрос будет правильно SARGable. :)

Maciej Los

- Спасибо, Ричард.

- Да, ты прав. Как всегда.

Рейтинг:
0

Vijay Ahlawat

Я думаю, что вы хотите распечатать подробную информацию о заказе на 10 дней назад с максимальной даты заказа.
Вы можете сделать это с помощью приведенного ниже запроса :-

SELECT * FROM TABLE1
WHERE CAST(ORDERDATE AS DATE)=(SELECT CAST(MAX(ORDERDATE)-10 AS DATE) FROM TABLE1)


Maciej Los

Это неправильно, потому что он будет извлекать только те данные, где orderdate равен max date. ОП хочет, чтобы последние 10 дней отсчитывались от максимальной даты. Пожалуйста, улучшите свой ответ, чтобы избежать отрицательного голосования.

Vijay Ahlawat

вот чего хочет пользователь

Tomiko

Спасибо! Это именно то, что мне было нужно.