Mariadb WHERE语句不起作用

Mariadb WHERE语句不起作用,mariadb,Mariadb,我正在尝试筛选accountledger.transactiondate以仅返回2019-04-01和2020-03-31之间的退款 但WHERE条款无效 我已将WHERE语句重新定位到脚本中的许多位置;结果没有变化 这是我的代码: SELECT accountledger.CAMPUSCODE, accountledger.ID, students.FNAME, students.LNAME, accountledger.PROGRAM, accountledger.TRANS

我正在尝试筛选accountledger.transactiondate以仅返回2019-04-01和2020-03-31之间的退款

但WHERE条款无效

我已将WHERE语句重新定位到脚本中的许多位置;结果没有变化

这是我的代码:

SELECT accountledger.CAMPUSCODE, accountledger.ID, students.FNAME,
    students.LNAME, accountledger.PROGRAM,
    accountledger.TRANSACTIONDATE, accountledger.TRANSACTIONAMOUNT,
    accountledger.DESCRIPTION as 'ENR Desc',
    accountledger.TRANSACTIONCODE as 'Inv Desc',
    chart_accounts.NAME AS 'ChAcc Name' 
FROM accountledger 

INNER JOIN students 
  ON accountledger.ID = students.ID
INNER JOIN fees 
  ON accountledger.TRANSACTIONCODE = fees.NAME
INNER JOIN chart_accounts 
  ON fees.ACCOUNT = chart_accounts.ACCOUNT

WHERE accountledger.TRANSACTIONtype = 'I' 
  and accountledger.transactioncode like '%refund%'
   or accountledger.transactioncode like '%paid to d-ed%'
   or accountledger.transactioncode like '%paid to military%'
   or accountledger.transactioncode like '%paid to voc rehab%'
  and chart_accounts.NAME
  AND accountledger.transactiondate BETWEEN 2019-04-01 AND 2020-03-31
GROUP BY accountledger.id
ORDER BY accountledger.TRANSACTIONDATE
我只希望在WHERE声明的日期参数内发出退款。但是,无论交易日期如何,脚本都会返回所有退款。

请使用正确的语法

accountledger.transactiondate BETWEEN CAST('2019-04-01' AS DATE) AND CAST('2020-03-31' AS DATE) 
而不是

accountledger.transactiondate BETWEEN 2019-04-01 AND 2020-03-31
使用正确的语法

accountledger.transactiondate BETWEEN CAST('2019-04-01' AS DATE) AND CAST('2020-03-31' AS DATE) 
而不是

accountledger.transactiondate BETWEEN 2019-04-01 AND 2020-03-31

您可能需要将or子句括在括号中—您确实需要括号
x和y或z
表示
(x和y)或z
,但您需要
x和(y或z)
。您可能需要将OR子句括在括号中您确实需要括号
x和y或z
的意思是
(x和y)或z
,但是你想要
x和(y或z)
CAST
太夸张了——只需要引号:
。。。在“2019-04-01”和“2020-03-31”之间,
CAST
太过夸张了——所需要的只是引号:
。。。在“2019-04-01”和“2020-03-31”之间