使用 oracle 将日期格式与字符串进行比较

时间:2021-06-21 10:13:50

标签: sql oracle

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

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

其中日期 1 : 10-JUN-21 01.00.00.000000000 AM 日期 2:2021 年 6 月 10 日 01:00

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

1 个答案:

答案 0 :(得分:1)

给定您的表格和数据:

<块引用>

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 转换为 TIMESTAMP 并进行比较:

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' );

哪个都输出零行:

<块引用>
<头>
DATE1 DATE2

db<>fiddle here

相关问题