我可以通过将变量声明为DATE
而不是作为来解决此问题VARCHAR
。
我在表中有一个预先配置的常量varchar2值。
我已将 lv_constants_config 声明为VARCHAR2
而不是DATE
.
我认为这就是我面临问题的原因。
SELECT * FROM constants_config
------------------------------
constant1
---------
01/01/3000
在我的 PL/SQL 代码中,我将这个值检索为,
SELECT TO_DATE(constant1,'MM/DD/YYYY') --I also tried with RRRR instead of YYYY.
INTO lv_constants_config
FROM constants_config;
我将此值与用户输入的值(来自 UI)进行比较。
IF iv_input_date > lv_constants_config
THEN
--do this
ELSE
--do that
END IF;
我的问题是 3000 被错误地解释为 00。
例如,01/01/3000 被解释为 2000 年 1 月 1 日
01/01/3049 被解释为 2049 年 1 月 1 日
01/01/3050 被解释为 2050 年 1 月 1 日
如何将日期与世纪值进行比较?