BETWEEN 和标准比较运算符 Oracle SQL

哈迪克

因为我需要使用的数据范围BETWEEN,因为据我所知,下面的这两个查询应该是相同的:

select * from table1 where my_date1 - my_date2 between (-1) and (-30);

select * from table1 where my_date1 - my_date2 <= (-1) and my_date1 - my_date2 >= (-30);

但是,当我在脚本中尝试时:

SELECT  
       a.account_no AS ACCOUNT_NO, 
       a.installment_no AS INSTALLMENT_NO, 
       a.INSTALLMENT_DATE AS INSTALLMENT_DATE 
FROM myTable a 
     INNER JOIN (SELECT 
                        ACCOUNT_NO,
                        MIN(INSTALLMENT_NO) AS INSTALLMENT_NO 
                 FROM myTable  
                 WHERE 
                      ACCOUNT_NO IS NOT NULL 
                      AND INSTALLMENT_NO IS NOT NULL 
                      AND STATUS = 'A'
                      GROUP BY ACCOUNT_NO) b 
     ON A.ACCOUNT_NO = B.ACCOUNT_NO AND A.INSTALLMENT_NO = B.INSTALLMENT_NO
WHERE (TRUNC(INSTALLMENT_DATE) - TRUNC(TO_DATE('12/01/2011','DD/MM/YYYY'))) BETWEEN (-1) AND (-30) -- If I change this

我有 0 行,但是当我改变时

WHERE (TRUNC(INSTALLMENT_DATE) - TRUNC(TO_DATE('12/01/2011','DD/MM/YYYY'))) BETWEEN (-1) AND (-30)

WHERE (TRUNC(INSTALLMENT_DATE) - TRUNC(TO_DATE('12/01/2011','DD/MM/YYYY'))) <= (-1) and (TRUNC(INSTALLMENT_DATE) - TRUNC(TO_DATE('12/01/2011','DD/MM/YYYY')))  >= (-30)

我得到超过 0 行。我想使用BETWEEN因为它更具可读性。我错过了什么吗?

蒂姆·比格莱森

我相信所用范围的语法BETWEEN是:

WHERE col BETWEEN <smaller_value> AND <larger_value>

这相当于

WHERE col >= <smaller_value> AND col <= <larger_value>

您当前的WHERE条款正在寻找日期的日期差异较大的-1-30这将消除您试图定位的所有记录,实际上永远不会是真的。要解决此问题,请更正范围:

WHERE (TRUNC(INSTALLMENT_DATE) - TRUNC(TO_DATE('12/01/2011','DD/MM/YYYY')))
    BETWEEN (-30) AND (-1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL语句中的多个BETWEEN和LIMIT运算符

来自分类Dev

Oracle中“ between”运算符的不同行为

来自分类Dev

Oracle中“ between”运算符的不同行为

来自分类Dev

使用LIMIT和BETWEEN运算符的类似子查询的较短SQL语句

来自分类Dev

使用LIMIT和BETWEEN运算符的类似子查询的较短SQL语句

来自分类Dev

如何在 Oracle SQL 中使用 JOIN 运算符?

来自分类Dev

SQL:如何省略“=”,仅使用 BETWEEN 运算符

来自分类Dev

SQL Server中的AND和OR运算符

来自分类Dev

SQL LIKE运算符和通配符

来自分类Dev

SQL LIKE运算符和通配符

来自分类Dev

用按位运算符而不是逻辑比较“ if between”

来自分类Dev

SQL标准中是否存在INTERSECT运算符?

来自分类Dev

Oracle Pl / SQL中用户定义的运算符背后的动机

来自分类Dev

使用Oracle SQL Developer时如何在表数据中使用IN运算符?

来自分类Dev

我对Oracle SQL中的ANY运算符有疑问

来自分类Dev

如何使用带有in运算符的oracle sql查询结果?

来自分类Dev

IN运算符,Oracle pl / sql中的100个字符串

来自分类Dev

=>在oracle pl sql。中是什么意思?它是在调用运算符吗?

来自分类Dev

Oracle Pl / SQL中用户定义的运算符背后的动机

来自分类Dev

Oracle SQL:将IN运算符与内联数组一起使用

来自分类Dev

具有不同比较器的SQL IN运算符

来自分类Dev

存储过程中的比较运算符SQL

来自分类Dev

在SQL中使用运算符之间的时间值比较

来自分类Dev

试图通过运算符比较SQL Server中的时间

来自分类Dev

Oracle SQL比较日期

来自分类Dev

Oracle SQL比较日期

来自分类Dev

Oracle SQL比较值

来自分类Dev

正则表达式用AND替换BETWEEN SQL运算符

来自分类Dev

如何在SQL中将BETWEEN运算符与文本值一起使用?

Related 相关文章

热门标签

归档