Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Преобразование даты
Форумы портала PHP.SU » » Работа с СУБД » Преобразование даты

Страниц (1): [1]
 

1. Batyabest - 04 Сентября, 2014 - 20:23:41 - перейти к сообщению
Здравствуйте.
По умолчанию дата из БД выводится в формате, не совсем удобном для восприятия виде.
У меня есть скрипт, который переводит дату в удобный для чтения вид.

Как его прикрепить к своему скрипту никак не пойму?

Вот код, переводящий дату в нудный вид:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT DATE_FORMAT( createdate,  '%d %M %Y %T'  )
  2. FROM news

Вот мой код, выводящий данные:

PHP:
скопировать код в буфер обмена
  1. if(!isset($_GET['id']))
  2. {
  3.    
  4. $result = mysql_query("SELECT * FROM table");
  5.  
  6. do
  7. {
  8.  
  9.      echo       "<h2>Таблица</h2>
  10.                         <ul>";
  11.  
  12.  while($myrow = mysql_fetch_array($result)){
  13.         echo "<li>
  14.  ". $myrow['id'] ."
  15. // И так далее
  16. </li>";
  17.  }
  18.  
  19.     echo        "</ul>";
  20.  
  21. }
  22. while ($myrow = mysql_fetch_array($result));
  23. }
2. Viper - 04 Сентября, 2014 - 20:54:15 - перейти к сообщению
Вы это
не можете заменить на это
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *, DATE_FORMAT(`createdate`, '%d %M %Y %T') AS `createdate` FROM `table`
? O_o
3. Batyabest - 04 Сентября, 2014 - 21:57:17 - перейти к сообщению
Ага, спасибо. А можно сделать чтобы месяцы по-русски писались?

Вот эту функцию куда писать?

CODE (SQL):
скопировать код в буфер обмена
  1. ELT( MONTH(createdate),
  2.  'Января','Февраля','Марта','Апреля','Мая','Июня',
  3.  'Июля','Августа','Сентября','Октября','Ноября','Декабря'
  4. )
4. Viper - 05 Сентября, 2014 - 08:35:44 - перейти к сообщению
Batyabest пишет:
Вот эту функцию куда писать?
никуда. Вам нужно отформатировать или месяцы преобразовать?
Проще это на php сделать.
5. Batyabest - 05 Сентября, 2014 - 08:37:18 - перейти к сообщению
Viper пишет:
Проще это на php сделать.


А если будет много запросов, преобразование на php не будет нагружать сильно?

И подскажите как сделать преобразование?
(Добавление)
Вот так я смог вывести все месяцы, а как мне конкретно к каждому выводу месяц подставить?

PHP:
скопировать код в буфер обмена
  1. $q=mysql_query("SELECT DISTINCT ELT(MONTH(date),'Января','Февраля','Марта','Апреля','Мая','Июня','Июля','Августа','Сентября','Октября','Ноября','Декабря') AS `date` FROM `table`");
  2. while($r=mysql_fetch_array($q))
  3. {
  4.           echo $r['date'];
  5. }
6. Viper - 05 Сентября, 2014 - 13:52:17 - перейти к сообщению
Batyabest пишет:
А если будет много запросов, преобразование на php не будет нагружать сильно?
нет. В вашем случае городить преобразования в запросе могут привести к тому, что запрос будет работать медленнее чем те же самые преобразования на PHP.
7. Batyabest - 05 Сентября, 2014 - 19:31:35 - перейти к сообщению
То есть нужно получить средствами mysql дату в виде 01 February 2014 и с помощью php привести ее к виду 01 Февраля 2014?

А как?
8. Batyabest - 06 Сентября, 2014 - 12:57:43 - перейти к сообщению
Подскажите как мне вывести месяца на русском, родном языке. Никак не додумаю, понимаю что вопрос глупый, но все же...

PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT *, DATE_FORMAT(date,  '%d %M %Y') AS `date` FROM `table`");
  2. do
  3. {
  4.  
  5.  while($myrow = mysql_fetch_array($result)){
  6.         echo "<h3 class='time'>". $myrow['date'] ."</h3>";
  7.  }
  8.  
  9.  
  10. }
  11. while ($myrow = mysql_fetch_array($result));
  12. }


Сейчас выводится месяц на английском вот так: 01 February 2015

update: Вопрос решен.
9. Viper - 06 Сентября, 2014 - 20:00:17 - перейти к сообщению
Batyabest strftime() strtotime() date() и иже с ними...

 

Powered by ExBB FM 1.0 RC1