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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Преобразование даты timestamp
Но он достаточно громоздкий и допустим в цикле из 1000+ записей, будет весьма долго работать.
В книге "MySQL Сборник рецептов" от Поль Дюбуа нашел в главе 5.5 - Разбиение дат и времени с помощью функции извлечения составляющих, функции типа "YEAR() - год даты, MONTH() - месяцы 1-12, DAYOFMONTH() - день месяца 1-31"
Вопросы: 1. Возможно ли на уровне запроса, выверки из базы данных, изменить получаемые даты из таблицы и выводить уже преобразованную дату?
2. Если "да", то как грамотно составить запрос? пример таблицы: id, name, date
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
TM123 пробовал, без результатов.... одно и то же.
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
TM123
Отправлено: 04 Февраля, 2011 - 00:35:50
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Нояб. 2010 Откуда: Москва
Помог: 0 раз(а)
Значит что-то неправильно делаете, не видя таблицы и диагностики сказать трудно.
Вот выдержка из документации, у меня работает все нормально.
Цитата:
DATE_FORMAT(date,format)
Форматирует величину date в соответствии со строкой format. В строке format могут использоваться следующие определители:
Определитель Описание
%M Название месяца (январь...декабрь)
%W Название дня недели (воскресенье...суббота)
%D День месяца с английским суффиксом (0st, 1st, 2nd, 3rd и т.д.)
%Y Год, число, 4 разряда
%y Год, число, 2 разряда
%X Год для недели, где воскресенье считается первым днем недели, число, 4 разряда, используется с '%V'
%x Год для недели, где воскресенье считается первым днем недели, число, 4 разряда, используется с '%v'
%a Сокращенное наименование дня недели (Вс...Сб)
%d День месяца, число (00..31)
%e День месяца, число (0..31)
%m Месяц, число (00..12)
%c Месяц, число (0..12)
%b Сокращенное наименование месяца (Янв...Дек)
%j День года (001..366)
%H Час (00..23)
%k Час (0..23)
%h Час (01..12)
%I Час (01..12)
%l Час (1..12)
%i Минуты, число (00..59)
%r Время, 12-часовой формат (hh:mm:ss [AP]M)
%T Время, 24-часовой формат (hh:mm:ss)
%S Секунды (00..59)
%s Секунды (00..59)
%p AM или PM
%w День недели (0=воскресенье..6=суббота)
%U Неделя (00..53), где воскресенье считается первым днем недели
%u Неделя (00..53), где понедельник считается первым днем недели
%V Неделя (01..53), где воскресенье считается первым днем недели. Используется с '%X'
%v Неделя (01..53), где понедельник считается первым днем недели. Используется с '%x'
%% Литерал ‘%’.
Все другие символы просто копируются в результирующее выражение без интерпретации:
В MySQL 3.23 символ ‘%’ должен предшествовать символам определителя формата. В более ранних версиях MySQL символ ‘%’ необязателен.
Причина того, что промежутки для месяца и дня начинаются с нуля заключается в том, что MySQL позволяет использовать неполные даты, такие как '2004-00-00', начиная с MySQL 3.23.
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010 Откуда: Россия, Москва
Помог: 1 раз(а)
TM123, на самом деле не видно, чтобы он присваивал новое значение (отформатированное) к значению поля date. Данная операция, возможно предназначена для записи и сверки данных? ---
Пригляделся в примеры кода форматирования даты в книге (глава 5.11)... результат оказался рабочим.
Ведь, чтоб форматирование работало, мало указать имя "столбца" для форматирования, надо указать и имя столбца для присвоения отформатированного значения... экранировать название столбца кавычками - обязательно!
----- Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
OrmaJever
Отправлено: 04 Февраля, 2011 - 01:23:45
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
LEONeso пишет:
Ведь, чтоб форматирование работало, мало указать имя "столбца" для форматирования, надо указать и имя столбца для присвоения отформатированного значения
я сразу не заметил что там ещё * есть. Если без неёто все сложится в нулевой индекс масива.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
TM123
Отправлено: 04 Февраля, 2011 - 08:46:05
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Нояб. 2010 Откуда: Москва
Помог: 0 раз(а)
Я вам сказал способ как ускорить и упростить форматирование, а дальше ваша задача написать select так, чтобы это работало в вашем проекте, я так select не пишу и даже не мог представить что его так можно писать - это путь к потенциальным ошибкам.
Могу дать совет, не стоит писать as `название совпадающее с названием поля таблицы`, это ведет к потенциальным ошибкам и дополнительным тратам времени на отладку. Получая в одном месте в таком виде данные, можно воспринять это как само собой разумеющееся и в другом месте рассчитывать на это, получив не то что ожидалось придется заниматься отладкой, в процессе которой будет выяснена ошибка, но время будет истрачено. Вероятность возникновения проблемы увеличивается, если над проектом работаете не вы один.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.