[英]Mysql sort by date not working as expected
我正在使用php將記錄從我的mysql數據庫中拉出,並希望通過稱為expdate的數據庫字段對它們進行排序。
提醒日期以varchar格式存儲在表中,格式為17-04-12。
我正在使用以下代碼將所有記錄拉出並按expdate列對其進行排序。
<table border="0" style="text-align:left;">
<tr style="text-align:left;">
<th style="text-align:left;" width="200px" scope="col">Name</th>
<th style="text-align:left;" width="200px" scope="col">Email</th>
<th style="text-align:left;" width="200px" scope="col">Telephone</th>
<th style="text-align:left;" width="200px" scope="col">Current Cover Expires</th>
</tr>
<?php
$today = date("d-m-y");
$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe ORDER BY expdate")or die(mysql_error());
echo '<tr style="text-align:left;">';
while($row = mysql_fetch_array($result))
{
echo '<td style="text-align:left;">';
echo $row['name'];
echo '</td>';
echo '<td style="text-align:left;">';
echo $row['email'];
echo '</td>';
echo '<td style="text-align:left;">';
echo $row['tel'];
echo '</td>';
echo '<td style="text-align:left;">';
echo $row['expdate'];
echo '</td>';
echo "</tr>";
}
?>
</table>
問題是,列被隨機地排序,它輸出記錄並按此日期順序對其進行排序:
08-07-12
17-05-12
17-05-13
嘗試
order by STR_TO_DATE(expdate, '%d-%m-%y')
(下一次使用真正的日期格式...作為日期數據;))
將日期以正確的日期格式存儲在MySQL中。 最好重新排列日期選擇器產生的格式,然后在MySQL內部正確存儲重新排列的日期。 這應該可以解決您的問題。
需要使用數據轉換:
$today = date("d-m-y");
$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe ORDER BY STR_TO_DATE(expdate,'%d-%m-%Y')") or die(mysql_error());
好吧,這井井有條,我可以確認2008年7月12日在2017年5月12日之前,也在2017年5月13日之前...
我猜你必須指定一個特定的格式到你選擇的日期
嘗試這個
$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe ORDER BY expdate DESC")or die(mysql_error());
使用ASC =提升
使用DESC =后代
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.