如果两个日期都存储在varchar中,如何在两个日期之间进行比较?
我遇到了一张写在几年前的表,其中日期(DD-MM-YY)存储在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;
我运行了这段代码,效果很好。
我的问题是如何?在后台进行什么处理。
答案 0 :(得分:0)
比较日期为日期。使用正确的日期/时间格式存储日期/时间。不要将它们存储为字符串!
您的代码无疑将删除行。是否删除所需的行是另一个问题。您想要的逻辑似乎是:
delete from myTable
where to_date(updated_date, 'DD-MM-YY') < trunc(sysdate) - 7;