首页 > 解决方案 > 使用 oracle 比较日期格式和字符串

问题描述

我正在使用以下 sql 将字符串与日期 oracle 进行比较,但结果不正确。我尝试使用 to_date、to_char 选项,但没有得到任何正确的结果。

select order from table where Date1 <>  to_char(Date2, 'DD-MON-YYYY HH24:MI');

其中 Date1 : 10-JUN-21 01.00.00.000000000 AM Date2: 10-JUN-2021 01:00

上面的 sql 返回上述 Date1 和 Date2 的行,尽管它是相等的。Date1 也是 varchar 格式,Date2 是 TIMESTAMP(6) WITH LOCAL TIME ZONE 格式。

标签: sqloracle

解决方案


给定您的表格和数据:

Date1 是 varchar 格式,Date2 是 TIMESTAMP(6) WITH LOCAL TIME ZONE 格式。

CREATE TABLE table_name (
  date1 VARCHAR2(20),
  date2 TIMESTAMP(6) WITH LOCAL TIME ZONE
);

INSERT INTO table_name (
  date1,
  date2
) VALUES (
  '10-JUN-2021 01:00',
  TIMESTAMP '2021-06-10 01:00:00.000000'
);

您可以转换DATE1为 aTIMESTAMP并进行比较:

SELECT *
FROM   table_name
WHERE  TO_TIMESTAMP( Date1, 'DD-MON-YYYY HH24:MI' ) <> Date2;

或者,转换DATE2为字符串:

SELECT *
FROM   table_name
WHERE  Date1 <> TO_CHAR( Date2, 'DD-MON-YYYY HH24:MI' );

两者都输出零行:

日期1 日期2

db<>在这里摆弄


推荐阅读