2017-02-14 4 views
1

Я хочу написать запрос, где мне нужно указать пользовательский диапазон (вместо жестко заданного диапазона дат) для даты, начиная с дня заказа. В используемой таблице у меня есть дата заказа.Задание пользовательского диапазона дат в SQL-запросе

В настоящее время я жёстко диапазон дат, как:

where owh.order_day between TO_DATE('2016/07/15','YYYY/MM/DD') and TO_DATE('2017/01/17','YYYY/MM/DD') 

где order_day является дата.

Но скорее я хочу что-то вроде:

where owh.order_day between TO_DATE(owh.order_day - 1,'YYYY/MM/DD') and TO_DATE(owh.order_day +3,'YYYY/MM/DD') 

Я делаю "-1", как это "между", так что потребуется от order_day - order_day + 2

Например, если order_day is: "17/01/2016", тогда я хочу, чтобы условие было там, где диапазон дат динамически рассчитывается как: «16/01/2016 - 20/01/2016». Возможно ли это? Если да, то как мы можем достичь в SQL?

БД в вопросе Oracle зацепки оценили

+1

SQL Server не имеет 'TO_DATE)' функция (. Какую базу данных вы используете? –

+0

Свое специфическое db компании. Возможно ли это вообще в любом sql-запросе? – user2696258

+0

Этот вопрос не имеет никакого смысла. Вы хотите сравнить 'order_day' с диапазоном на основе' order_day'. Измените свой вопрос (или спросите другого). Пометьте правильную базу данных, которую вы используете. Предоставьте образцы данных и желаемые результаты. –

ответ

0

Поскольку вы не сказали нам, какой RDBMS вы используете, и так как вы говорите, «любые выводы оценили», я полагаю, что мы свободны, чтобы дать ответ для любой СУБД. Ниже будет работать на MySQL:

BETWEEN DATE_SUB(somedate, INTERVAL 1 DAY) AND DATE_ADD(somedate, INTERVAL 1 DAY) 

(источник: https://www.tutorialspoint.com/sql/sql-date-functions.htm#function_date-add)

+0

БД - оракул. Может ли это решение по-прежнему выполняться? – user2696258

+0

LMGTFY: https://docs.oracle.com/cd/E57340_01/DR/Dateadd.html –

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