У меня есть две переменная TO_DATE
и FROM_DATE
. Моя таблица имеет два поля DOJ
и DOL
. Я хочу выбрать все записи где DOJ < TO_DATE and DOL > FROM_DATE
.
Как я могу записать SQL-запрос в для этого?
Вы можете столкнуться с проблемами с переменной to_date, поскольку это встроенная команда Oracle. Это можно обойти, используя двойные кавычки везде, где используется переменная, например, так:
SELECT * FROM my_table WHERE doj < "to_date" AND dol > from_date;
Не совсем понятно, что вы хотите сделать.
Я хочу выбрать все записи, у которых DOJ < TO_DATE и, В ТЕЧЕНИЕ ВРЕМЕНИ, DOL > FROM_DATE.
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE" AND DOL > "FROM_DATE"; -- using double quotes in order to
-- avoid confusion with TO_DATE
-- built-in function with the same name.
-- Thanks to kicsit ;-)
Я хочу выбрать все записи, DOJ которых < TO_DATE и, ОТДЕЛЬНО, DOL > FROM_DATE.
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE"
UNION -- UNION ALL substituted with UNION, thanks to kicsit user ;-)
SELECT *
FROM MY_TABLE
WHERE DOL > "FROM_DATE";
... или - то же самое:
SELECT *
FROM MY_TABLE
WHERE DOJ < "TO_DATE" OR DOL > "FROM_DATE";