Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формат времени, DateTime 
:(
    Опции темы
kristina
  Дата 7.4.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



У меня есть в таблице данных поле datetime, с текущей датой, в которую заносится с помощью функции now(). Она в формате 0000-00-00 00:00:00.
Как мне сделать так чтобы данные выводились в другом формате, например число-месяц-год ч:м Помогите пожалуйста! Я совсем не разбираюсь в mysql, буду ОЧЕНЬ признательна, если мне расскажут все в подробностях smile

PM MAIL   Вверх
Render
Дата 7.4.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Можно так, при помощи ф-ции DATE_FORMAT();

SELECT date, DATE_FORMAT(date, '%M %d, %Y') FROM `твоя таблица`;

Форматирование дат:

%Y-Четырех значный год.
%y-Двухзначный год.
%M-Полное название месяца.
%b-Три первые буквы названия месяца.
%m-Двух значный месяц года (01...12).
%c-Месяц года (1...12).
%d-Двух значный день месяца (01...31).
%e-День месяца (1...31)
%r-Время в 12 часовом формате
%T-Время в 24 часовом формате
%H-Двухзначный час
%i-Двухзначная минута
%s-Двухзначная секунда

Это сообщение отредактировал(а) Render - 7.4.2006, 18:12
PM   Вверх
kristina
Дата 10.4.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



После запроса, табличку он мне выдал правильно, только вот в гостевой все равно формат времени старый.
PM MAIL   Вверх
Render
Дата 10.4.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



какой формат нужен, и на чем собственно гостевая...
Может дело даже не в базе?
PM   Вверх
kristina
Дата 10.4.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



Гостевая на php
Формат мне нужен примерно такой : 10.04.06 14:34

После такого запроса:
SELECT datetime, DATE_FORMAT(datetime, '%M %d, %Y') FROM `book`;
Появилась табличка

2006-04-05 17:15:00 April 05, 2006
2006-04-05 17:23:02 April 05, 2006

Но в самой гостевой формат времени не изменился, он остался таким же 2006-04-05 17:15:00


PM MAIL   Вверх
Render
Дата 10.4.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Код PHP в студию...
Кусок который выводит дату...
PM   Вверх
kristina
Дата 10.4.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



Я просто печатаю переменную

$out = ' <tr ><td width="30%" class="smtab" valign="top"><b>'.$datetime.'</b>';
Добавлено @ 13:09
Так я умаю дело не в этом, потому что дата в самой таблице не изменилась
PM MAIL   Вверх
Render
Дата 10.4.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Она и не должна изменится в таблице, ты просто формат вывода меняешь...
А как там переменная $datetime формируется?
PM   Вверх
kristina
Дата 10.4.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



в базу $datetime заносится с помощью функции now()
PM MAIL   Вверх
Ignat
Дата 10.4.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(kristina @ 10.4.2006, 14:48 Найти цитируемый пост)
заносится с помощью функции now()

Это нормальный формат хранения даты.
Рекомендую ознакомиться с форматами хранения данных в справке к MySQL.

А ответ на вопрос уже был:
Цитата(Render @ 10.4.2006, 14:16 Найти цитируемый пост)
Она и не должна изменится в таблице, ты просто формат вывода меняешь...




--------------------
Теперь при чем :P
PM   Вверх
kristina
Дата 10.4.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



вообще мне интересно, почему у меня не меняется формат при выводе даты в гостевой книге
PM MAIL   Вверх
Ignat
Дата 10.4.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(kristina @ 10.4.2006, 15:56 Найти цитируемый пост)
вообще мне интересно, почему у меня не меняется формат при выводе даты в гостевой книге

Гм... Понял =)


Код

SELECT DATE_FORMAT(`datetime`, '%d %m %Y') AS `datetime` FROM `book`; 
/*не забываем экранировать имена полей, если они совпадают с ключевым словом!*/


А так? smile


--------------------
Теперь при чем :P
PM   Вверх
kristina
Дата 10.4.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



нет, все равно выдает прежний формат smile
PM MAIL   Вверх
Ignat
Дата 10.4.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(kristina @ 10.4.2006, 17:01 Найти цитируемый пост)
нет, все равно выдает прежний формат

Ну тогда во избежание перенапряжения наших мозгов при попытке телепатического просмотра кода, прошу запостить отрывок с обработкой результата запроса.

Тему пермещаю в PHP.


--------------------
Теперь при чем :P
PM   Вверх
kristina
Дата 10.4.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



пжлста smile

SELECT DATE_FORMAT(`datetime`, '%d %m %Y') AS `datetime` FROM `book`;

SQL-запрос:
SELECT DATE_FORMAT( `datetime` , '%d %m %Y' ) AS `datetime`
FROM `book`
LIMIT 0 , 30

datetime
10 04 2006
10 04 2006
10 04 2006
----------------------------------------
SELECT datetime, DATE_FORMAT(datetime, '%M %d, %Y') FROM `book`;

SQL-запрос:
SELECT datetime, DATE_FORMAT( datetime, '%M %d, %Y' )
FROM `book`
LIMIT 0 , 30

datetime DATE_FORMAT(datetime, '%M %d,
%Y')
2006-04-05 17:15:00 April 05, 2006
2006-04-05 17:23:02 April 05, 2006
2006-04-06 16:50:12 April 06, 2006

PM MAIL   Вверх
Ignat
Дата 10.4.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



kristina, Я имел ввиду PHP-код smile


--------------------
Теперь при чем :P
PM   Вверх
kristina
Дата 11.4.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



вот этот?

Код

function gb_show($page)
{
    $begin = ($page - 1) * 10;

  db_query("SELECT DATE_FORMAT(datetime, '%d %m %Y') AS datetime FROM gb"); 
  $result = db_query('SELECT * FROM gb ORDER BY datetime DESC LIMIT '.$begin.','.RECSPERPAGE); 

  while($row = db_fetch_array($result))
  {
    $out .= template_show_body($row['id'], $row['name'], $row['email'], $row['www'],  $row['sity'], $row['message'], $row['datetime']);
  }

  db_free_result($result);
  print $out;
}



Запрос к БД

Код

function db_query($query)
{
  $result = @mysql_query($query) or die('Не могу сделать запрос к БД ');
  return $result;
}


PM MAIL   Вверх
Render
Дата 11.4.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



Код

function gb_show($page)
{
    $begin = ($page - 1) * 10;

  db_query("SELECT DATE_FORMAT(datetime, '%d %m %Y') AS datetime FROM gb"); 
  $result = db_query('SELECT * , DATE_FORMAT(`datetime`, '%d %m %Y %T') AS `datetime`
FROM `gb` 
ORDER BY `datetime` DESC LIMIT '.$begin.','.RECSPERPAGE); 

  while($row = db_fetch_array($result))
  {
    $out .= template_show_body($row['id'], $row['name'], $row['email'], $row['www'],  $row['sity'], $row['message'], $row['datetime']);
  }

  db_free_result($result);
  print $out;
}


Попробуй так, у меня нормально отработал!

На самом деле вот эту строку можно вообще убрать!
Код

db_query("SELECT DATE_FORMAT(datetime, '%d %m %Y') AS datetime FROM gb");


Это сообщение отредактировал(а) Render - 11.4.2006, 12:24
PM   Вверх
kristina
Дата 11.4.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



теперь вообще дат не пишет smile
PM MAIL   Вверх
kristina
Дата 11.4.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



smile) я нашла у себя ошибку! теперь все работает! все супер! спасибо большое всем! smile
PM MAIL   Вверх
Ignat
Дата 11.4.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(Render @ 11.4.2006, 12:42 Найти цитируемый пост)
На самом деле вот эту строку можно вообще убрать!

Не "можно", а нужно! Это лишняя нагрузка на БД.


--------------------
Теперь при чем :P
PM   Вверх
Render
Дата 11.4.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



В чём фишка то была?
PM   Вверх
kristina
Дата 11.4.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



работает это
Код

 $result = db_query('SELECT * , DATE_FORMAT(`datetime`, '%d %m %Y %T') AS `datetime`
FROM `gb` 
ORDER BY `datetime` DESC LIMIT '.$begin.','.RECSPERPAGE);


просто я дальше наисправляла, сейчас все ОК
PM MAIL   Вверх
Ignat
Дата 11.4.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



kristina, еще не рекомендуется использовать конструкцию

SELECT *, ...

Т.е. вместо звездочки перечислять только те поля, которые нужны в выборке.


--------------------
Теперь при чем :P
PM   Вверх
Render
Дата 11.4.2006, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 12.5.2005

Репутация: нет
Всего: 3



А не всё ли равно, у нее наверняка там всё поля и выбираются...
PM   Вверх
Ignat
Дата 11.4.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(Render @ 11.4.2006, 14:39 Найти цитируемый пост)
А не всё ли равно,

Даже если программисту все равно, то SQL - серверу нет.


--------------------
Теперь при чем :P
PM   Вверх
kristina
Дата 11.4.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



ок, спасибо, учту на будущие smile
PM MAIL   Вверх
kristina
Дата 14.4.2006, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



Я тут обратила внимание, что после изменения кода на

Код

$result = db_query("SELECT * , DATE_FORMAT( datetime, '%d-%m-%Y %H:%i' ) AS datetime FROM `gb` ORDER BY datetime DESC LIMIT ".$begin.",".RECSPERPAGE); 


У меня перестали правильно сортироваться записи в гостевой книге

До какого-то момента сортировка идет правильно, а потом сообщения начинаются вставляться не по порядку.
Если поставить

Код

$result = db_query('SELECT * FROM gb ORDER BY datetime DESC LIMIT '.$begin.','.RECSPERPAGE);


то все сообщения сортируются по порядку
PM MAIL   Вверх
Ignat
Дата 17.4.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



kristina, для начала избавьтесь от звездочки в запросе.
Затем попробуйте разобраться по какому полю идет сортировка. Наводка: в данном запросе есть неоднозначность.
Задача: отсортируйте по нужному полю, избавившись от неоднозначности.

Если что-то станет непонятно, пишите. 


--------------------
Теперь при чем :P
PM   Вверх
Reptor
Дата 17.4.2006, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: 0
Всего: 0



Цитата

еще не рекомендуется использовать конструкцию

SELECT *, ...

Т.е. вместо звездочки перечислять только те поля, которые нужны в выборке. 


Не помню в какой но  в какойто очень хорошой статье писали что наоборот лече использовать *

 
PM MAIL ICQ   Вверх
Ignat
Дата 17.4.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73





Цитата(Reptor @  17.4.2006,  17:35 Найти цитируемый пост)
Не помню в какой но  в какойто очень хорошой статье писали что наоборот лече использовать *

Если в статье написано, что лучше использовать *, то я очень сомневаюсь, что эта статья очень хорошая. Точнее я уверен в обратном.
 


--------------------
Теперь при чем :P
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.