Oracle SQL - 一个查询提供正确的输出,而另一个非常相似的查询却没有。为啥?

Posted

技术标签:

【中文标题】Oracle SQL - 一个查询提供正确的输出,而另一个非常相似的查询却没有。为啥?【英文标题】:Oracle SQL - One query gives the correct output while the other, very similar, query does not. Why?Oracle SQL - 一个查询提供正确的输出,而另一个非常相似的查询却没有。为什么? 【发布时间】:2018-04-30 20:43:31 【问题描述】:

这个查询正在执行并给出正确的输出:

select * from emp where hiredate > '15-11-81'

但是这个查询没有给出正确的输出:

select * from emp where hiredate > '01-01-11'

为什么?

【问题讨论】:

为了帮助你,请把查询的输出放上去,然后把查询的错误信息放上去。 你会比较字符串和日期吗?不应该是to_date('15-11-81','dd-mm-yy') 而不是'15-11-81' 第一个查询给出 6 行作为输出,但第二个查询没有给出任何输出并且也没有任何错误 我也尝试过使用 to_date 函数 【参考方案1】:

我觉得

 select * from emp where hiredate > '01-01-11'

没有数据。您需要与查询和表定义共享表数据。

【讨论】:

7839 国王总统 17-11-81 5000 10 7698 布莱克经理 7839 01-05-81 2850 30 7782 克拉克经理 7839 09-06-81 2450 10 7566 琼斯经理 783997581 20 7788 SCOTT分析师7566 19-04-87 3000 20 7902福特分析师7566 03-12-81 3000 20 7369史密斯职员7902 17-12-80 800 20 7499艾伦推销员7698 20-02-81 1600 300 30 7521病房推销员7698 22-02-81 1250 500 30 7654马丁推销员7698 28-09-81 1250 1400 30 7844特纳销售人员7698 08-09-81 1500 0 30 7876亚当斯特克7788 23-05-87 1100 20 7900 23-05-87 1100 20 7900 23-05-87 1100 20 7900 JAME 23-05-87 1100 20 7900 James Clerk 7698 03-12 03-12 -81 950 30 7934 米勒文员 7782 23-01-82 130 你应该这样做: 如何通过比较日期获取数据 您的日期数据类型是 nvarchar。你应该把它转换成日期。 使用 Convert(datetime,HireDate)

以上是关于Oracle SQL - 一个查询提供正确的输出,而另一个非常相似的查询却没有。为啥?的主要内容,如果未能解决你的问题,请参考以下文章

Substr 在 oracle 中的 sql 中给出不正确的输出

Java + Oracle 中的 SQL 查询

Oracle:查找多个查询运行的总查询运行时间

SQL查询从双重返回N行

如何以输出生成“创建表语句”的方式格式化 Oracle SQL 查询?

构建一些动态查询选择并立即在 Oracle PL/SQL 中显示其输出