SQL语句是否同时显示这两种情况
我发现了我的应用程序中的一个bug,其中sql语句没有显示正确的结果。我不希望表中的每一笔交易都来自某个特定的iban:SQL语句是否同时显示这两种情况,sql,db2,Sql,Db2,我发现了我的应用程序中的一个bug,其中sql语句没有显示正确的结果。我不希望表中的每一笔交易都来自某个特定的iban: SELECT * FROM BANKING.TRANSTAB WHERE ABSENDER = 'DE71419330598239161300' OR EMPF
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月,而包含意味着午夜的事件可能包括两次。