Сравнение даты в базе данных Oracle

У меня есть две переменная TO_DATE и FROM_DATE. Моя таблица имеет два поля DOJ и DOL. Я хочу выбрать все записи где DOJ < TO_DATE and DOL > FROM_DATE.

Как я могу записать SQL-запрос в для этого?

1
задан Korhan Ozturk 20 March 2012 в 11:00
поделиться

2 ответа

Вы можете столкнуться с проблемами с переменной to_date, поскольку это встроенная команда Oracle. Это можно обойти, используя двойные кавычки везде, где используется переменная, например, так:

SELECT * FROM my_table WHERE doj < "to_date" AND dol > from_date;
2
ответ дан 3 September 2019 в 00:17
поделиться

Не совсем понятно, что вы хотите сделать.

ПЕРВАЯ ИНТЕРПРЕТАЦИЯ

Я хочу выбрать все записи, у которых 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";
0
ответ дан 3 September 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: