ORDER BY子句无法在实时服务器中正常工作

时间:2018-07-13 09:38:20

标签: php sql-order-by

我已经开发了一个包含表“ test”的php项目。将获取并显示行,并使用ORDER BY查询中的SQL子句按日期列对日期进行排序。以下是使用的代码块

<?php 
      foreach($stmt =$conn->query('SELECT * FROM test JOIN users USING(rollno)
      WHERE rollno='.$userRow['rollno'].' order by date desc')as $row){ ?>
        <button class="accordion"><b>Test on <?php echo date('d-m-Y', strtotime( $row['date'] )); ?></b></button>
          <div class="panel">
           <p>
           <table border="1">
            <?php
            echo "<tr><td>Date: " . date('d-m-Y', strtotime( $row['date'] )) . "</td></tr>";
            echo "<tr><td>Subject: " . $row['sub'] . "</td></tr>";
            echo "<tr><td>Topic: " . $row['topic'] . "</td></tr>";
            echo "<tr><td>Type: " . $row['type'] . "</td></tr>";
            echo "<tr><td>Total Marks: " . $row['totl_marks'] . "</td></tr>";
            echo "<tr><td>Marks Obtained: " . $row['marks'] . "</td></tr>";
            echo "<tr><td>Rank: " . $row['rank'] . "</td></tr>"; ?>
         </table>
            </p>
          </div>
      <?php }?> 

我想对记录进行排序,以使最新记录排在最前面。数据库中存储的日期为d-m-Y格式。系统在localhost上运行良好,但是当项目上线时,记录未按预期排序。数据库中的日期列使用varchar类型。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

mysql中的

STR_TO_DATE函数可以提供帮助。它将首先将数据库中的日期字符串转换为date类型,然后应用排序依据。

按查询顺序应为:

ORDER BY STR_TO_DATE(date,'%d-%m-%Y') DESC