在日期之间搜索的正确方法

时间:2013-07-12 20:14:09

标签: c# sql-server

我的查询必须在特定日期之间获取客户的陈述和某些数据。出于测试目的,我创建了一些测试帐户并使用了完整的查询。

现在我需要在日期之间进行过滤。这是我目前的查询:

SELECT 
FechaDeSistema, 
Code, 
CASE 
    WHEN DR_Socio = @SocioNum THEN cast(Cantidad as decimal(19,2)) 
END as Debit, 
CASE 
    WHEN CR_Socio = @SocioNum THEN cast(Cantidad as decimal(19,2)) 
END AS Credit, 
CASE 
    WHEN DR_Socio = @SocioNum THEN cast(BalanceDebito as decimal(19,2)) 
    WHEN CR_Socio = @SocioNum THEN cast(BalanceCredito as decimal(19,2)) 
END AS Balance 
FROM Ledger 
 WHERE (Debito_Cuenta = @Acct) 
 OR    (Credito_Cuenta = @Ncct) 
 AND (FechaDeSistema BETWEEN @Start AND @Final)
 ORDER BY FechaDeSistema DESC";

日期的参数由我设置的两个日历给出。但是,当我生成报告时,它仍然显示整个数据范围,从不在我选择的日期之间进行选择。我做错了什么?

2 个答案:

答案 0 :(得分:7)

将WHERE子句更改为:

 WHERE (Debito_Cuenta = @Acct OR Credito_Cuenta = @Ncct) 
 AND FechaDeSistema BETWEEN @Start AND @Final

您的括号不正确,并且将您的条款分组错误。

答案 1 :(得分:1)

这可能是您的WEHRE条款的操作顺序。

WHERE something
    OR somethingelse
    AND onemorething

SQL可能会以不同于您期望的方式解释它们。在某处添加括号以澄清您实际需要的内容。