sql 如何比较存储在 varchar 数据类型中的日期

How sql compares date stored in varchar datatype

如果两个日期都存储在 varchar 中,如何比较两个日期?

我看到一个 table 是几年前写的,其中日期 (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;

我执行了这个并且工作正常。

但很想了解幕后工作,这个 varchars 是如何比较的。

比较日期与日期。使用正确的 date/time 格式存储 date/times。不要将它们存储为字符串!

您的代码无疑会删除行。它是否删除你想要的行是另一个问题。你想要的逻辑好像是:

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