php - SQL 查询中的条件

标签 php mysql sql

我想创建一个查询,如果 DATEDIFF(so_date,actual_delivery) = 3,则显示“通过”一词,否则显示“失败”。有人可以帮我吗?

<?php
$hostname="localhost"; 
$username="root";
$password="";
$db = "csl_otd"; 
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT so_date,
       actual_delivery,
       case when DATEDIFF(so_date, actual_delivery) = 3 
            then "Passed"
            else "Failed"
       end as status
FROM sales_order
LEFT JOIN dar ON sales_order.dar_numberr = dar.dar_number
WHERE DATEDIFF(so_date, actual_delivery) < 10') as $row) {
echo "<tr>";
echo "<td>" . $row['so_date'] . "</td>";
echo "<td>" . $row['actual_delivery'] . "</td>"; 
echo "<td>" . $row['DATEDIFF(so_date,actual_delivery)'] . "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "</tr>";  
}
?>
</tbody></table>

输出

Date Difference  | Status
2                | Passed
4                | Failed    

最佳答案

使用案例

SELECT so_date,actual_delivery,
     DATEDIFF(so_date,actual_delivery) Date_Difference,
    case when  DATEDIFF(so_date,actual_delivery) = 3 
    then "Passed"
    else "Failed" end Status
    FROM sales_order
    LEFT JOIN dar
    ON sales_order.dar_numberr=dar.dar_number
    WHERE DATEDIFF(so_date,actual_delivery)<10

或者您可以使用您使用过的(但几乎没有更正)

SELECT so_date,actual_delivery,DATEDIFF(so_date,actual_delivery),
if ( DATEDIFF(so_date,actual_delivery) = 3 
,'Passed','Failed') status
FROM sales_order
LEFT JOIN dar
ON sales_order.dar_numberr=dar.dar_number
WHERE DATEDIFF(so_date,actual_delivery)<10

关于php - SQL 查询中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53236715/

相关文章:

php - Jquery 切换行为不一致

php - 网络安全 : where to begin

php - 如何在 Symfony2 中创建禁止响应?

python - 如何使用python从sql数据库中检索格式正确的时间戳

sql - 留在Access中的 "SQL Mode"?

MySQL 查询组合来自多个表的总和

PHP 将推文插入 mysql

MYSQL:SELECT 方法 - 但不显示重复项/GROUP 或 DISTINCT?

php - 使用 PHP 将 MySQL 查询转换为 JSON

sql - 返回有限游标的函数