2012-04-18 24 views
3

MySQLの日付フィールドを省略した曜日として出力する方法がわかりません。MySQLの日付から曜日を出力する方法

MySQLまたはPHPでこれを行うかどうかはわかりません。

理想的には、私はPHP関数でこれをやりたいのですが、複雑にするために、曜日として出力したい日付フィールドはwhileループをテーブルに実行しています。これは私がMySQLでそれを行う必要があると私に思います。

基本的には、whileループでこれを行う必要があるため、PHPのmktime()やMySQLのDAYOFWEEK()などを使用できるようにするために、変数を使用する必要があります。書式設定のために1つの特定の日付を入力または取得する代わりに、関数の列名を使用します。

ご協力いただきありがとうございます。

P.S.データが現在どのようにデータベースから取得されているかを以下に追加しました。 ###は私が問題を抱えている場所です。これは、 'e_date'カラムを使ってDayをエコーする必要がある場所です。 (次の日も「e_date」列を使用しています。)

// Get all the data from the "events" table 
      $result = mysql_query(" 
      SELECT * 
      FROM events 
      WHERE e_type != '' && e_date >= CURDATE() && e_date <= (CURDATE() + 15) 
      ORDER BY e_date,e_ampm,e_time") 
      or die(mysql_error()); 

      echo "<table border='1' style=\"border:none;font-size:12px;\">"; 
      echo "<tr> <th>Day</th> <th>Date</th> <th>Time</th> <th>Type</th> <th>Description</th> </tr>"; 
      // keeps getting the next row until there are no more to get 
      while($row = mysql_fetch_array($result)) { 
       // Print out the contents of each row into a table 
       echo "<tr><td>"; 
       ### 
       echo "</td><td>"; 
       echo $row['e_date']; 
       echo "</td><td>"; 
       echo $row['e_time']; 
       echo $row['e_ampm']; 
       echo "</td><td>"; 
       echo $row['e_type']; 
       echo "</td><td>"; 
       echo $row['e_name']; 
       echo "</td></tr>"; 
      } 

      echo "</table>"; 
+0

コードを表示できますか?私は、「日付フィールドは... whileループをテーブル内に実行している」という意味を理解していません。 – pilcrow

答えて

2

この修正版をお試しください。 DATE_FORMATを使用し、入力変数としてdatefieldを使用し、%aは出力の書式を示します。 %aは、日付の短縮日を返すようにDATE_FORMATに指示します。私は間違っている可能性がありますので、私はしばらくの間、MySQLを使用していない、ショットを与え、それが動作するかどうかを確認します。

// Get all the data from the "events" table 
     $result = mysql_query(" 
     SELECT DATE_FORMAT(e_date, '%a') as day, e_date, e_time, e_ampm, e_type,e_name 
     FROM events 
     WHERE e_type != '' && e_date >= CURDATE() && e_date <= (CURDATE() + 15) 
     ORDER BY e_date,e_ampm,e_time") 
     or die(mysql_error()); 

     echo "<table border='1' style=\"border:none;font-size:12px;\">"; 
     echo "<tr> <th>Day</th> <th>Date</th> <th>Time</th> <th>Type</th> <th>Description</th> </tr>"; 
     // keeps getting the next row until there are no more to get 
     while($row = mysql_fetch_array($result)) { 
      // Print out the contents of each row into a table 
      echo "<tr><td>"; 
      echo $row['day']; 
      echo "</td><td>"; 
      echo $row['e_date']; 
      echo "</td><td>"; 
      echo $row['e_time']; 
      echo $row['e_ampm']; 
      echo "</td><td>"; 
      echo $row['e_type']; 
      echo "</td><td>"; 
      echo $row['e_name']; 
      echo "</td></tr>"; 
     } 

     echo "</table>"; 
+0

ありがとう、これは動作します!そして私は私がする必要があるかもしれないと思ったよりずっと簡単です。再度、感謝します。 – Joshua

+0

さらに、私が頭の中で問題を抱えていたことを私に教えてくれたのはSELECT行にあったのですが、同時に1つのフィールドを書式化しながら同時に変数として割り当てましたが、SELECTフィールドの配列同じmysql_queryの中にあります。ありがとうございました! – Joshua

0

私はデータを扱うには、データベースの一部を維持し、PHPのプレゼンテーションです。 MySQLのデータがどのように出力されているかによって、strftime()またはstrptime()を使います。

+0

ありがとうございます。私はまだ特定の状況でMySQLデータを引き出すためにPHP関数を関連付ける方法がまだ分かりません。私はオリジナルの質問にいくつかのコードを追加しました。###は私が問題を抱えている場所です(そして、おそらく私のmysql_query()も改訂が必要な場合)。 – Joshua

0

私のアドバイスは、いつもunixtime形式の日付を扱います。私は常にデータベースに整数フィールドとして日付を格納します。

あなたのケースでは、日付フィールドをunixtimeに変換して照会し、php date関数を使用してフォーマットを処理することができます。

<?php 

$query = " 
SELECT UNIX_TIMESTAMP(e_date) AS UNIXTIME, * 
FROM events 
WHERE e_type != '' && e_date >= CURDATE() && e_date <= (CURDATE() + 15) 
ORDER BY e_date,e_ampm,e_time"; 

$result = mysql_query($query) or die("error"); 
... 

while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr>"; 
    echo sprintf('<td>%s</td>', date('l', $row["UNIXTIME"])); //day of week 
    ... 
    echo "</tr>"; 
} 

?> 
+0

アドバイスありがとうございます - 私はこれを調べます。 – Joshua

関連する問題