这是我桌子的代码:
<table border="black">
<tr><th>Date</th><th>Newsletter ID</th></tr>
<?php
while ($row = oci_fetch_array($stid)):
echo "<tr><td>" . htmlentities($row["DATE_ENG"]) . "</td>";
echo "<td>" . htmlentities($row["FEATURE_TITLE_ENG"]) . "</td>";
$NewsIDN = $row["NEWS_IDN"];
?>
<td>
<form name="editEmail" action="editEmail.php" method="GET">
<input type="hidden" name="EmailID" value="<?php echo $NewsIDN; ?>"/>
<input type="hidden" name="action" value="e">
<input type="submit" name="editEmail" value="Edit"/>
</form>
</td>
<td>
<form name="deleteEmail" action="deleteEmail.php" method="POST">
<input type="hidden" name="newsIDN" value="<?php echo $NewsIDN; ?>"/>
<input type="submit" name="deleteEmail" value="Delete" action="deleteEmail.php" onclick="return confirm('Are you sure want to delete')"/>
</form>
</td>
这是接收数据的查询。如何制作它以便在正确的日期从上到下订购表格,以便2013年1月到2013年5月之前?
public function get_Newsletters() {
$query = "SELECT NEWS_IDN,DATE_ENG,DATE_FRA,FEATURE_TITLE_ENG,FEATURE_TITLE_FRA,FEATURE_DESC_ENG,FEATURE_DESC_FRA,FEATURE_IMG_URL_ENG,FEATURE_IMG_URL_FRA,FEATURE_IMG_ALT_ENG,FEATURE_IMG_ALT_FRA,FEATURE_URL_ENG,FEATURE_URL_FRA,LAST_MODIFIED_BY,LAST_MODIFIED_DT,PUBLISHED_IND FROM BETS.TB__BETS_NEWSLETTERS ORDER BY DATE_ENG";
$stid = oci_parse($this->con, $query);
oci_execute($stid);
return $stid;
}
所以该表正在调用上面的查询,现在我正在做ORBEDER BY DATE_ENG
答案 0 :(得分:0)
MySQL的默认排序顺序是ASC,意味着行从最低到最高排序,日期值从早到晚排序。
您正在使用“按DATE_ENG ASC排序”,这会将日期从小到大排序。你想要的应该由此完成。
如果是相反的方法,请尝试“按DATE_ENG DESC排序”
如果你的DATE_ENG是varchar的类型,那么排序是按照你的日期格式进行的,可能不是你想要的那样。
最佳用途是,对于日期字段,始终使用unix TIMESTAMP或DATETIME,然后使用“order by”语句始终为您提供正确的结果。
这种方法的优点是几乎每种语言都有工具来默认处理unix TIMESTAMP和mysql DATETIME格式。
答案 1 :(得分:0)
DATE_ENG
应为DATE
或DATETIME
数据类型。没有它,它就无法准确排序。更改后,您可以使用now()
将日期插入数据库。然后,您可以ORDER BY DATE_ENG
或ORDER BY DATE_ENG DESC
在datetime
数据类型上查看more information。
答案 2 :(得分:0)
如果您的格式不同,则order by
格式存储在列中的日期m/d/Y
会产生STR_TO_DATE
,然后在SELECT NEWS_IDN,DATE_ENG,DATE_FRA,FEATURE_TITLE_ENG,FEATURE_TITLE_FRA,
FEATURE_DESC_ENG,FEATURE_DESC_FRA,FEATURE_IMG_URL_ENG,FEATURE_IMG_URL_FRA,
FEATURE_IMG_ALT_ENG,FEATURE_IMG_ALT_FRA,FEATURE_URL_ENG,FEATURE_URL_FRA,
LAST_MODIFIED_BY,LAST_MODIFIED_DT,PUBLISHED_IND FROM BETS.TB__BETS_NEWSLETTERS
ORDER BY STR_TO_DATE(DATE_ENG, '%m/%d/%Y') ASC
函数中使用该特定日期格式
{{1}}
以下是某些专栏的sql fiddle,但即使您的专栏类型不是日期,也要向您展示它的工作原理