我的代码如下。用于在数据库中保存日期的列类型是 DATE。问题是,如果我$row['appointment_date']
表格按顺序显示日期为 YYYY-mm-dd,但如果我date('d-m-Y',strtotime($row['appointment_date']))
以我想要的格式显示日期(dd-mm-YYYY)
,那么顺序会发生变化并按天而不是按月和年顺序显示日期。例如,它显示 02-05-2011、03-03-2011、05-01-2011 等。我也尝试过DateTime::createFromFormat
但问题仍然存在。使用默认日期格式,输出thisdefault_date_format。但是使用 d-m-Y 格式,输出是这个without_default_date_format
<?php
$query = "SELECT * FROM appointment,users WHERE appointment.user_id=users.user_id AND users.role_id=2 ORDER BY appointment.appointment_date";
$result = mysqli_query($connection, $query);
while($row=mysqli_fetch_array($result)){
?>
<tr>
<td><?php echo date('d-m-Y',strtotime($row['appointment_date'])); ?></td>
<td><?php echo substr($row['appointment_time'],0,5); ?></td>
<td><?php echo $row['type']; ?></td>
<td><?php echo $row['appointment_notes']; ?></td>
</tr>
<?php
}
?>
尝试使用
ORDER BY appointment.appointment_date ASC";
或
ORDER BY appointment.appointment_date DESC";
在您的查询中...
如果未指定 ASC 或 DESC 关键字,则默认为 ASC 或升序。
因此,当您使用 yyyy-mm-dd 时,它会按 yyyy 升序,当您使用 dd-mm-yyyy 时,它会按 dd 升序。
所以你的查询应该是
$query = "SELECT * FROM appointment,users WHERE appointment.user_id=users.user_id AND users.role_id=2 ORDER BY appointment.appointment_date DESC";
更新:
$query = "SELECT * FROM appointment,users WHERE appointment.user_id=users.user_id AND users.role_id=2 ORDER BY STR_TO_DATE(appointment.appointment_date , '%Y-%m-%d') ASC";