如何将字符串中的日期与 Oracle 中的 sysdate 进行比较?

How to compare date in string with sysdate in Oracle?

我是 Oracle 的新手,仍然习惯 SQL 服务器。

我不明白为什么下面的命令会 return '1' 显然今天的 sysdate 是 29-Apr-15,而在 30-Apr-15

之前

应该是return0。但是我不明白为什么是returns 1。

有什么想法吗?谢谢=)

SELECT CASE WHEN sysdate > to_date('30-Apr-15','DD-MON-YYYY') THEN '1' ELSE '0' END
    FROM DUAL

你错过了约会的那个世纪

SELECT CASE WHEN sysdate > to_date('30-Apr-2015','DD-MON-YYYY') THEN '1' ELSE '0' END
    FROM DUAL

因为你用的是15而不是2015。您需要注意 Y2K 漏洞。在 DATE 中使用 'YY' 格式表示年份是个坏主意。将字符串转换为 DATE

时,始终尝试使用 'YYYY'

否则,使用RR格式来克服Y2K问题。

例如,

SQL> alter session set nls_date_format='mm/dd/yyyy';

Session altered.

SQL> SELECT TO_DATE('30-Apr-15','DD-MON-RR') RR,
  2         TO_DATE('30-Apr-15','DD-MON-YYYY') YY
  3  FROM DUAL;

RR         YY
---------- ----------
04/30/2015 04/30/0015

SQL>

在您的查询中使用相同的内容:

SQL> SELECT
  2    CASE
  3      WHEN sysdate > to_date('30-Apr-15','DD-MON-RR')
  4      THEN '1'
  5      ELSE '0'
  6    END
  7  FROM DUAL
  8  /

C
-
0

SQL>