试图获得日期范围成员

时间:2011-08-08 12:52:24

标签: mysql sql datetime where-clause mysql-error-1064

我试图让会员详细说明那些没有按照给定日期范围付款的人((givendate + 8,givendate + 30)这样的 我想要这样的细节是在这些日期之间没有报酬的memebrs(((givendate + 8,givendate + 30))

像这样,如果givendate是(1-09-2008)我想要这样的日期范围(08-09-2008,30-09-2008)

我已经完成了

WHERE  DATE_ADD(memberpaysched.memberPaySched_dateDue,DATE_DIFF((ADDDATE(memberpaysched.memberPaySched_dateDue, 8)),(ADDDATE(memberpaysched.memberPaySched_dateDue,30))) )< NOW()

注意今天考虑今天日期的adendate = memberpaysched.memberPaySched_dateDue

但是它给出了错误

    Error Code: 1064
   You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATEDIFF((ADDDATE(memberpaysched.memberPaySched_dateDue, 8)),(ADDDATE(memberpays' at line 18

任何人都会对此有所了解

3 个答案:

答案 0 :(得分:1)

...
where
memberPaySched_dateDue
between '2008-09-01' + interval 7 day and '2008-09-01' + interval 29 day

答案 1 :(得分:1)

请尝试这样:

WHERE 
  memberpaysched.memberPaySched_dateDue BETWEEN 
    CURDATE() + INTERVAL 8 DAY 
    AND CURDATE() + INTERVAL 30 DAY

答案 2 :(得分:1)

保持简单,尽可能接近用英语表达的方式:

WHERE memberPaySched_dateDue between ADDDATE(NOW(), 8) and ADDDATE(NOW(), 30)

或者如果您有特定日期而不是now()

WHERE memberPaySched_dateDue between ADDDATE('2011-09-01', 8) and ADDDATE('2011-09-01', 30)

请注意,由于两个范围之间的值在执行期间是常量,因此这将是高效的(与强制每行计算的代码不同)