![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Kesh |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Есть табличка, в которой есть два поля `datestart` и `dateend` типа timestamp(14). В которых хранятся даты начала и конца определенного события. После этого выполняется запрос на события, которые должны произойти в течение недели. Делается это так
Обратите внимание на это выражение
оно преобразует дату из двух полей в выражение типа 11:40 - 12:20 Вопрос вот в чем, не оптимальнее ли будет это делать (преобразование дат) через PHP и как это сделать. Это сообщение отредактировал(а) Kesh - 6.2.2005, 21:17 -------------------- ![]() |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Kesh
А почему нельзя хранить дату ввиде: 1107716599, работать элементарно и не надо диких запросов? |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Mal Hack а в timestamp она так и хранится только наоборот YYYYMMDDHHmmSS
Добавлено @ 22:54 http://www.mysql.ru/docs/man/DATETIME.html -------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Нет, ты не понял...
Я тебе говорю не про YYYYMMDDHHmmSS, а про UNIX TIME, где 1107716599 - число секунд с начала 1970 года... |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Mal Hack
Ладно, понятно, извини недоглядел... Ну и чем лучше выбирать UNIX_TIME и потом отрабатывать его в PHP, чем получать готовые данные из запроса?.. -------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
1. UNIX_TIME - число, а следовательно ве операции сравнения в базе будут намного быстрее, чем использования FROM_UNIXTIME и т.п.
2. Выбрать за период очень просто, опять `time` < `time` - 7 * 60* 60 к примеру. 3. запросы короче и более читаемы. 4. Когда ты уже вынешть нужную инфу тебе очень легко сделать нормальный вывод, применив к ячейке date(); к примеру... Т.е. ты не завязан на конкретном формате даты, который ты делаешь в запросе.. Но самое главное - 1 и 2. |
|||
|
||||
Kesh |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Mal Hack
Я не использую FROM_UNIXTIME.
7*60*60 тоже вычисляется... И даже если записать константой, то уж от операции вычитания никуда недеться...
Запрос зашит в php код и я не думаю, что преобразования внутри php будут удобнее, чем в запросе с точки зрения читаемости самих исходников скриптов.
Так а сейчас мне этого вообще делать не надо - я просто вывожу уже имеющиеся данные... -------------------- ![]() |
||||||||
|
|||||||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
-------------------- ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Я имел ввиду не конкретно эжту функцию, а вообше... CONCAT и DATE_FORMAT в твоем запросе. |
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 5 Всего: 54 |
Mal Hack А ты думаешь, что такая обработка в php будет гораздо быстрее?..
-------------------- ![]() |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: -1 Всего: 4 |
Kesh
конечно. + ещё unix time использовать. Даже не сравнимо. Ты сделай EXPLAIN запроса, посмотри, утверждать не берусь, но по-моему при использовании таких функций мускул не использует индекс. -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |