Sql 条件表达式、访问中的数据类型不匹配
我写了这个查询Sql 条件表达式、访问中的数据类型不匹配,sql,ms-access,Sql,Ms Access,我写了这个查询 SELECT dayar FROM dayarim WHERE ( Year(enter_month) = Year(Now()) ) OR ( Year(enter_month) < Year(Now()) AND Year(left_month) >= Year(Now()) ) AND ( Datediff('m', Iif(Year(enter_month) = Year(Now()), enter_mo
SELECT dayar
FROM dayarim
WHERE ( Year(enter_month) = Year(Now()) )
OR ( Year(enter_month) < Year(Now())
AND Year(left_month) >= Year(Now()) )
AND ( Datediff('m', Iif(Year(enter_month) = Year(Now()), enter_month,
'1/1/' + Year(Now())), Now()) * 50 ) < (
Datediff('m', '1/1/' + Year(Now()), Now()) * 50 )
我得到了这个错误:
条件表达式中的数据类型不匹配
我在google中搜索,发现这个错误意味着equal to表达式与字段数据类型不匹配
我的桌子:
我的数据:
我正试图得到一份没有付钱的名单
他们每个月需要支付50英镑,所以结果将是未支付的名单
编辑
由于Gustav的评论,我理解我没有检查他们支付的金额
SELECT dayar
FROM dayarim
WHERE ( Year(enter_month) = Year(Now()) )
OR ( Year(enter_month) < Year(Now())
AND Year(left_month) >= Year(Now()) )
AND (SELECT Sum(payments.sum)
FROM payments
WHERE payments.paymentdate > '1/1' + Year(Now())
AND paymentdate <= Now()
AND payerid = dayarim.id) < (
Datediff('m', '1/1/' + Year(Now()), Now()) * 50 );
但仍然会出现相同的错误请尝试:
SELECT
dayar
FROM
dayarim
WHERE
Year(Nz(left_month, Date())) >= Year(Date())
AND
Year(enter_month) <= Year(Date())
AND
(SELECT Sum(payments.sum)
FROM payments
WHERE Year(payments.paymentdate) = Year(Date())
AND payerid = dayarim.id) < (Month(Date()) - 1) * 50
正确的查询是:
SELECT dayar
FROM dayarim
WHERE ( Year(enter_month) = Year(Now()) )
OR ( Year(enter_month) <= Year(Now())
AND Year(left_month) = Year(Now()) )
AND (SELECT Sum(payments.sum)
FROM payments
WHERE payments.paymentdate > Dateserial(Year(Now()), 1, 1)
AND paymentdate <= Now()
AND payerid = dayarim.id) < ( Datediff('m',
Dateserial(Year(Now(
)),
1, 1), Now()) * 50 );
我只是用DateSerial函数及其工作原理来替换日期的填充
多亏了Joe4你似乎把所有关于日期和年份的事情都搞混了,并且以一种非常复杂的方式误用了文本。请问你想做什么?@Gustav,我想弄清楚,从年初到本月,人们都没有付钱,但入月和离月是什么?日期、年份或?示例数据和期望的结果将有助于解释您试图执行的操作。@Gustav日期/时间,查看我的编辑,我发布了表结构。它没有抛出任何错误,但也不能正常工作,我将粘贴我的解决方案,现在有朋友帮助我