sql - 使用 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 格式。
解决方案
给定您的表格和数据:
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<>在这里摆弄
推荐阅读
- c++11 - CMake FindThreads 与现代 C++ 的正确用途是什么?
- python - 类或 __init__ 构造函数中的文档字符串?
- ios - Swift,我需要哪些项目设置和配置代码才能将 Objective C CocoaPod 与 swift 项目一起使用?
- javascript - 如果值为 true,则使用拼接删除数组项
- javascript - 隐藏所有其他子元素并添加关闭按钮
- python - Python - Matplotlib - 保持轴均匀和线性,并在网格上绘制点
- python - 使用 Ansible 进行 Vagrant 配置 - mysql_db 找不到 PyMySQL
- scala - Scala - 具有 100 个字段的案例类 (StackOverflowError)
- typescript - 泛型函数类型作为输入参数的泛型类型(打字稿)错误 TS2314
- c++11 - 如何在 Qt5 的 CMAKE 中包含 QGLVIEWER