2

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
4

5 に答える 5

6

試す

order by STR_TO_DATE(expdate, '%d-%m-%y')

(次回は実際の日付形式を使用します...日付データに;))

于 2012-05-30T20:50:27.593 に答える
1

MySQL内に適切な日付形式で日付を保存します。datepickerによって生成された形式を再配置してから、再配置された日付をMySQL内に適切に格納するのが最善です。これで問題が解決するはずです。

于 2012-05-30T20:51:42.723 に答える
0

データ変換を使用する必要があります:

$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());
于 2012-05-30T20:50:16.777 に答える
0

これは秩序だったので、2008年7月12日は2017年5月12日より前であり、2017年5月13日より前であることが確認できます...

あなたは私が推測するあなたの選択した日付に特定のフォーマットを指定する必要があります

  • expdateはVARCHARです:他のメンバーが言ったように、STR_TO_DATE(expdate、'%d /%m /%Y')を使用します
  • expdateは日付です:DATE_FORMAT(expdate、'%d /%m /%Y')を使用してください
于 2012-05-30T20:50:35.013 に答える
-1

これを試して

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe ORDER BY expdate DESC")or die(mysql_error());

ASC=アセンダントを使用する

DESC=子孫を使用します

于 2012-05-30T20:50:53.020 に答える