[英]mySQL sometimes search for null
I have a slight issue with mySQL: 我的mySQL有一个小问题:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= "AND (date(orderRelease.Sales_Release_Date)) >= '" . $rooflightReportSalesReleaseFromDate
. "' OR orderRelease.Sales_Release_Date IS NULL" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (date(orderRelease.Sales_Release_Date)) <= '" . $rooflightReportSalesReleaseToDate
. "' OR orderRelease.Sales_Release_Date IS NULL";
}
$rooflightReportSalesReleaseToDate and $rooflightReportSalesReleaseFromDate will sometimes be blank, but i'm fiding if both dates have values it's still returning null (probably because the OR statements). $ rooflightReportSalesReleaseToDate和$ rooflightReportSalesReleaseFromDate有时为空,但是我想知道两个日期是否都具有值,但它仍返回null(可能是因为OR语句)。 Is there a way i can get it to handle the null/blank records because i'm getting errors if i don't have the or statements in (or the null check is on its own) 有没有一种方法可以让我处理空/空记录,因为如果我没有or语句(或者空检查是独立的),我会报错
Thanks. 谢谢。
You're mixing AND and OR so it is most likely an operator precedence issue. 您正在混合AND和OR,因此很可能是运算符优先级问题。 Just add parenthesis around OR operations: 只需在OR运算符周围加上括号即可:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= "AND (
date(orderRelease.Sales_Release_Date) >= '" . $rooflightReportSalesReleaseFromDate . "'
OR orderRelease.Sales_Release_Date IS NULL
)" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (
date(orderRelease.Sales_Release_Date) <= '" . $rooflightReportSalesReleaseToDate . "'
OR orderRelease.Sales_Release_Date IS NULL
)";
}
Having said that, assuming that Sales_Release_Date contains date+time but the variables contain date only, you can eliminate the date()
cast like so: 话虽如此,假设Sales_Release_Date包含date + time,但变量仅包含date,则可以像这样消除date()
:
if ($rooflightReportSalesReleaseFromDate !== "" ) {
$sql .= " AND (orderRelease.Sales_Release_Date >= '" . $rooflightReportSalesReleaseFromDate . "' OR orderRelease.Sales_Release_Date IS NULL)" ;
}
if ($rooflightReportSalesReleaseToDate !== "") {
$sql .= " AND (orderRelease.Sales_Release_Date < '" . $rooflightReportSalesReleaseToDate . "' + INTERVAL 1 DAY OR orderRelease.Sales_Release_Date IS NULL)";
// check for less than only -------------------^ ^
// add one day to end date --------------------------------------------------------------------
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.