0

我可以通过将变量声明为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 日

如何将日期与世纪值进行比较?

4

0 回答 0