我想用几个条件来选择基于开始和结束日期的记录。基本上我想要什么都没有结束日期,或者在给定的时间段内开始或者在同一给定的时间段内结束。任何帮助或方向如何可能完成将非常感激。我在下面的查询中包含WHERE部分和参数绑定,但如果需要的话可以包含更多的参数。在SQL中嵌套和/或者哪里
$periodsCxn->bindParam(':PositionID',$PositionID);
$periodsCxn->bindParam(':Start',$firstPayPeriod);
$periodsCxn->bindParam(':End',$lastPayPeriod);
$periodsCxn->bindParam(':Start2',$firstPayPeriod);
$periodsCxn->bindParam(':End2',$lastPayPeriod);
WHERE
POSITION_PERIOD.PositionID = :PositionID AND
(
(
POSITION_PERIOD.EndDate = '1900-01-01'
OR
POSITION_PERIOD.EndDate IS NULL
)
OR
(
POSITION_PERIOD.StartDate BETWEEN :Start AND :End
OR
POSITION_PERIOD.EndDate BETWEEN :Start2 AND :End2
)
)
你到底想要做什么?为什么1900年结束日期? P.S:不需要使用像Start2和End2这样的不同变量,只需在每次需要时使用原始变量即可。 –
看起来就像是从这里的1或2或3或4(除了分隔和子句之外,没有额外的括号)。什么不工作? – mcalex
@Swift是的,你必须使用不同的占位符名称。事实上,你认为你不告诉我,你不[禁用模拟准备](http://stackoverflow.com/a/12202218/889949) - PDO模拟准备将允许你做到这一点,真正的准备做不。 – DaveRandom