Мне нужно сравнить дату с датой текущего дня, используя SYSDATE, что-то вроде этого:
SELECT * FROM my_table
WHERE date_column BETWEEN TO_DATE(SYSDATE -3,'dd.mm.yyyy') AND TO_DATE(SYSDATE,'dd.mm.yyyy');
Однако это не дает результата .... Мой вопрос:
На основена принятом ответе здесь мы НИКОГДА не должны сравнивать строки с датой.Но с другой стороны, SYSDATE уже является типом данных Date, и мы не должны сравнивать его с датой - см. Здесь .
Если я заменим TO_DATE на TO_CHAR в верхнем SQL все снова работает.Но функция TO_CHAR преобразуется в String, поэтому Oracle (я полагаю) необходимо снова преобразовать эту строку в дату, чтобы вы заставили Oracle выполнить неявное преобразование типов данных.
Итак, какое должно быть правильное сравнение с датой и SYSDATE, чтобы избежать медленной работы Oracle?