我使用以下代码输出数据库条目:
<div id="main_area">
<div id="container">
<div id="php_container" role="main">
<?php
include('connect_it.php');
$sqlget= "SELECT * FROM dbtablename";
$sqldata= mysqli_query ($dbcon,$sqlget) or die('this is an error');
while ($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
echo $row[ 'li' ] ;
}
?>
</div>
</div>
</div>在页面加载时,我希望数据库条目按其日期(从最近到最近)排序,该日期存储在名为'added‘的mysql字段中,格式为DD/MM/YY。
我不确定是否可以这样做,但作为另一种选择,日期在<span id="date">date: 27/11/11</span>定义的范围内,所以也许这个范围可以用来对数据进行排序?
所以我的问题是,如何使按日期排序的初始输出从最近到最不最近?
我试过了:
$sqlget= "SELECT * FROM dbtablename ORDER BY added ASC";但我得到了意想不到的结果。
谢谢。
发布于 2012-11-30 11:53:33
如果添加的列是DATE、DATETIME或TIMESTAMP类型,则可以像这样使用DATE_FORMAT,
$sqlget= "SELECT *, DATE_FORMAT(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY added ASC";请看,https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
否则,如果它是一个字符串try (尽管它实际上应该是一个日期类型),
$sqlget= "SELECT *, STR_TO_DATE(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY STR_TO_DATE(added,'%d/%m/%y') ASC";https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
发布于 2012-11-30 11:58:13
首先有几件小事(还有更多),由于id属性应该是唯一的,所以<span id="date">...</span>是无效的,请改用<span class="date">...</span>。浏览器将呈现它,甚至在大多数情况下都会正确呈现它,但不是"id“属性的正确使用。
是否需要选择查询中的所有列?如果不是,请只选择您需要的。
您想要的查询是:
SELECT * FROM dbtablename ORDER BY added DESC但这将选择所有行和所有列。现在是棘手的部分了。您说您的数据是以'dd/mm/yyy‘格式存储的,所以这个查询将不起作用,因为每年每个月大约有30天。您需要使用以yyyy-mm-dd 00:00:00格式存储日期数据的datetime列类型。如你所见,这将纠正你的所有问题。
或者,正如其他人所说,使用STR_TO_DATE(added,'%d/%m/%y')来提取数据。
然后,在PHP中对提取的数据使用(其中$var是您的日期值):
echo date('d/m/y',strtotime($var));希望这能有所帮助。
https://stackoverflow.com/questions/13638715
复制相似问题