我正在使用以下 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 格式。
答案 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