如何按用户输入的日期订购我的表格

时间:2013-06-20 13:34:10

标签: javascript php html html-table sql-order-by

这是我桌子的代码:

<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

3 个答案:

答案 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应为DATEDATETIME数据类型。没有它,它就无法准确排序。更改后,您可以使用now()将日期插入数据库。然后,您可以ORDER BY DATE_ENGORDER 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,但即使您的专栏类型不是日期,也要向您展示它的工作原理