SQL语句是否同时显示这两种情况

SQL语句是否同时显示这两种情况,sql,db2,Sql,Db2,我发现了我的应用程序中的一个bug,其中sql语句没有显示正确的结果。我不希望表中的每一笔交易都来自某个特定的iban: SELECT * FROM BANKING.TRANSTAB WHERE ABSENDER = 'DE71419330598239161300' OR EMPF

我发现了我的应用程序中的一个bug,其中sql语句没有显示正确的结果。我不希望表中的每一笔交易都来自某个特定的iban:

 SELECT *
 FROM BANKING.TRANSTAB                                                            
 WHERE ABSENDER = 'DE71419330598239161300'                                    
         OR EMPF = 'DE71419330598239161300'                                           
         AND                                                                          
         TIME BETWEEN TO_DATE('2018-10','YYYY-MM')                                    
         AND TO_DATE('2018-12','YYYY-MM');                                            
------+---------+---------+---------+---------+---------+---------+---------+---------+---
  ROW_ID  ABSENDER                EMPF                                     SUMME  ZWECK   
------+---------+---------+---------+---------+---------+---------+---------+---------+---
      98  DE71419330598239161300  DE38820942858809256538                   10.45  test    
      99  DE71419330598239161300  DE38820942858809256538                   23.42  test    
     102  DE71419330598239161300  DE38820942858809256538                   12.00  123     
     103  DE71419330598239161300  DE38820942858809256538                   12.00  12      
     104  DE71419330598239161300  DE38820942858809256538                   12.00  123     
     105  DE71419330598239161300  DE38820942858809256538                  123.00  123     
它当前仅显示来自所选iban Alt的事务,尽管事实上也有传入的事务:

 106  DE38820942858809256538  DE71419330598239161300                    1.00  spufitest     
 107  DE38820942858809256538  DE71419330598239161300                    1.00  Spufitest     
 108  DE38820942858809256538  DE71419330598239161300                    1.00  spufgitest    

如果您使用或需要使用内括号或所有条件

SELECT * FROM BANKING.TRANSTAB                                                            
     WHERE (ABSENDER = 'DE71419330598239161300'                                    
     OR EMPF = 'DE71419330598239161300')
     AND                                                                          
     TIME BETWEEN TO_DATE('2018-10','YYYY-MM')                                    
     AND TO_DATE('2018-12','YYYY-MM');  

这给了我0行返回。@bastel这意味着您在ABSENDER或EMPF“DE71419330598239161300”的“2018-10”和“2018-12”时间之间没有任何交易。是的,您是对的。我的时间查询错了。当时间采用这种格式时,我如何搜索月份:2018-12-02-02.47.29.987903?银行表中时间列的数据类型是什么。TRANSTAB@bastel-按时间>=截止日期'2018-10','YYYY-MM'和时间<截止日期'2019-01','YYYY-MM'搜索您的月份范围。始终使用显式的独占上限查询和存储日期/时间/时间戳类型,并避免介于两者之间。您最初的包含上限实际上是“2018-12-01T00:00:00.000000”,这是错误的,因为有两个原因显然不包括整个12月,而包含意味着午夜的事件可能包括两次。