2012-04-18 4 views
3

У меня возникли проблемы с поиском или вычислением того, как выводить поле даты MySQL как сокращенный день недели.Как вывести день недели из MySQL date

Я не уверен, делать это в MySQL или PHP.

В идеале я хотел бы сделать это с помощью функции PHP, но чтобы усложнить ситуацию, поле даты, которое я хочу вывести в качестве дня недели, выполняется через цикл while в таблицу. Это заставляет меня думать, что мне нужно сделать это в MySQL.

В принципе, я хочу, чтобы иметь возможность использовать что-то вроде mktime() или MySQL DAYOFWEEK() MySQL, за исключением того, что мне нужно иметь возможность сделать это в цикле while, мне нужно иметь возможность использовать переменную или имя столбца в функции вместо того, чтобы вводить или вытаскивать одну конкретную дату для форматирования.

Любая помощь очень ценится!

P.S. Я добавил ниже, как данные в настоящее время поступают из базы данных. ### где я испытываю проблемы; это - то, где мне нужно, чтобы повторить День, используя столбец «e_date». (Следующий Дата также использует «» 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, использовать поле даты в качестве входной переменной, а% 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, форматируя только одно поле, в то же время назначая его как переменную, но применяя его только к одному из массива полей SELECT в пределах той же mysql_query. Спасибо! – Joshua

0

Я хотел бы сохранить часть базы данных для работы с данными, а также представление в PHP. Вы хотите использовать strftime() или strptime() в зависимости от того, как ваши данные выводятся из MySQL.

+0

Спасибо. Я просто до сих пор не знаю, как связать функцию PHP с данными MySQL в моей конкретной ситуации. Я добавил код в свой первоначальный вопрос - ###, где у меня возникают проблемы (и, возможно, мой mysql_query(), если это тоже нужно пересмотреть). – Joshua

0

Мой совет всегда касается даты в формате unixtime. Я всегда храню дату как целое поле в базе данных.

Для вашего случая вы можете запросить поле даты, преобразовывая его в unixtime и позволяя функции даты php обрабатывать форматирование.

<?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

Смежные вопросы