MySQL результат даты, отображающий случайную дату - PullRequest
0 голосов
/ 13 марта 2019

В моей базе данных есть некоторые liveDates, которые являются 0000-00-00, но когда я запускаю запрос mysqli и отображаю результаты, liveDate отображает 11-30--0001,

это только начало происходить, когда я ввел этот код для отображения дат в виде d-m-Y

<td>".date("m-d-Y",strtotime($row["liveDate"]))."</td>

PHP

echo "<tr><th>ID</th><th>Amount</th><th>Date</th><th>Method</th><th>Status</th><th>Live Date</th><th>Edit</th></tr>";

// output data of each row
while($row=mysqli_fetch_assoc($depositresult)) {


    echo "<tr><td>".$row["id"]."</td>
    <td>&pound;".$row["amount"]."</td>
    <td>".date("m-d-Y",strtotime($row["date"]))."</td>
    <td>".$row["method"]."</td>
    <td>".$row["status"]."</td>
    <td>".date("m-d-Y",strtotime($row["liveDate"]))."</td>
    <td><a href='edit-deposit.php?GetID=".$row['id']."'>Edit</a></td></tr>";
}

// table footer

echo "</table>";

он должен возвращать liveDate как 00-00-0000, так как liveDate в таблице базы данных - 0000-00-00

если есть дата, например 2019-03-11 отлично работает

enter image description here

1 Ответ

3 голосов
/ 13 марта 2019

Функция strtotime пытается интерпретировать вашу строку даты.Поскольку «0000-00-00» на самом деле является недопустимой датой (нет 0-го или 0-го дня в любом месяце), оно пытается исправить ее.

Поскольку день 0 на один день меньше первого днямесяца, он перейдет к последнему дню предыдущего месяца.То же самое с месяцем 0, это на один месяц меньше первого месяца, поэтому он станет последним месяцем предыдущего года.

Вот почему «год 0, месяц 0, день 0» становится «год -1, месяц 12»., день 0 ", а затем" год -1, месяц 11, день 30 ".Или в формате «mdY»: "11-30--0001".

Обновление

Если вы хотите сохранить нотацию «00-00-0000» для этих недействительных дат,Вы не можете использовать функции форматирования даты.Самый простой способ - проверить это и написать самому:

echo "<tr><td>".$row["id"]."</td>
<td>&pound;".$row["amount"]."</td>
<td>".date("m-d-Y",strtotime($row["date"]))."</td>
<td>".$row["method"]."</td>
<td>".$row["status"]."</td>
<td>";

if ($row["liveDate"] == "0000-00-00") {
    echo "00-00-0000";
} else {
    echo date("m-d-Y",strtotime($row["liveDate"]));
}

echo "</td>
<td><a href='edit-deposit.php?GetID=".$row['id']."'>Edit</a></td></tr>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...