提问者:小点点

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


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

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

地点日期1:10-JUN-2101.00.00.000000000 AM日期2:10-JUN-2021 01:00

上述sql返回上述Date1和Date2的行,尽管它们相等。Date1也是varchar格式,Date2是带有本地时区格式的时间戳(6)。


共1个答案

匿名用户

根据您的表格和数据:

Date1是varchar格式,Date2是带有本地时区格式的时间戳(6)。

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

您可以将日期1转换为时间戳并比较:

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

或者,将日期2转换为字符串:

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

它们都输出零行: