Как sql сравнивает дату, хранящуюся в типе данных varchar - PullRequest
0 голосов
/ 14 июня 2019

Как проводится сравнение двух дат, если обе хранятся в varchar?

Я наткнулся на таблицу, написанную много лет назад, в которой дата (ДД-ММ-ГГ) хранится в архиве. формат

updated_date varchar(255)

и в процедуре для операции удаления было написано так, чтобы удалить миллионы таблиц-

(переменная температура) -

temp_date_tocompare varchar2(255) :=to_char(sysdate-7, 'YYYY-MM-DD')

delete from myTable
    where updated_date < temp_date_tocompare;

Я запустил этот код, и он отлично работает.

У меня вопрос как? какой процесс делается за кадром.

1 Ответ

0 голосов
/ 14 июня 2019

Сравните даты как даты .Сохраните дату / время, используя правильные форматы даты / времени.Не храните их как строки!

Ваш код, несомненно, удалит строки.Удаляет ли он нужные вам строки - это другой вопрос.Кажется, логика, которую вы хотите:

delete from myTable
    where to_date(updated_date, 'DD-MM-YY') < trunc(sysdate) - 7;
...