Как следует из заголовка, я хочу использовать strtotime
для двух столбцов даты в базе данных в операторе CASE.
ОБНОВЛЕНИЕ
Это полный код php.
<?php
$conn=mysqli_connect("localhost","root","nature526","thebase");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($conn, "SELECT * FROM thetable ORDER BY curdate, case
when mainissue = 'No Water Flow/Low Pressure' AND ((Previous - Recent) / Recent) * 100 >= 120 then 1
when mainissue = 'Leakage' AND address = 'Torko St. San Jose, Antique' AND ((Previous - Recent) / Recent) * 100 > 110 then 2
when mainissue = 'High Meter Readings' then 3
else 4
end asc");
echo " <center> <table border='1'>
<tr>
<th>Full Name</th>
<th>Address</th>
<th>Account Number</th>
<th>Box Number</th>
<th>Designated date for Repairs</th>
<th>Issue</th>
<th>Additional Information</th>
<th>Date Difference</th>
</tr>";
while ($row = mysqli_fetch_array($result))
{
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['address'] . "</td>";
echo "<td>" . $row['actnum'] . "</td>";
echo "<td>" . $row['boxnum'] . "</td>";
echo "<td>" . $row['reqdate'] . "</td>";
echo "<td>" . $row['mainissue'] . "</td>";
echo "<td>" . $row['textarea'] . "</td>";
echo "<td>" . (strtotime($row['curdate']) - (strtotime($row['recentdate']))) / 86400 . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($conn);
Итак, приведенный выше код работает, но я хочу включить двастолбцы даты recentdate
и curdate
.Но меня беспокоит, где я должен использовать strtotime
в запросе.Это работает, когда я использую его, чтобы повторить строку.echo "<td>" . (strtotime($row['curdate']) - (strtotime($row['recentdate']))) / 86400 . "</td>";
.Эта формула работает и выводит разницу между столбцами даты.December 10, 2018
и December 12, 2018
выведут в таблицу 2
.Теперь, как strtotime
будет работать в операторе CASE
, чтобы я мог расставить приоритеты по наибольшей разнице?
Теоретически это должно выглядеть так:
$result = mysqli_query($conn, "SELECT * FROM thetable ORDER BY curdate, case
when mainissue = 'No Water Flow/Low Pressure' AND ((Previous - Recent) / Recent) * 100 >= 130 AND strotime(curdate - recentdate) / 86400 >= 1 then 1
when mainissue = 'No Water Flow/Low Pressure' AND ((Previous - Recent) / Recent) * 100 >= 120 then 2
when mainissue = 'Leakage' AND address = 'Torko St. San Jose, Antique' AND ((Previous - Recent) / Recent) * 100 > 110 then 3
when mainissue = 'High Meter Readings' then 4
else 5
end asc");
ОБНОВЛЕНИЕ
И размещение DATEDIFF()
вместо strtotime
также не сработает, потому что это дает мне mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, логическое значение ошибка