Date_format MySql VS парсинг php

Руслан

Новичок
Приветствую.
Работаю над приблудой к одной достаточно серьёзной системе в которой объём данных растёт очень и очень быстро. Работает она на FireBird'е. Понадобилось отформатировать дату на выводе аля 00.00.0000. Так как до этого с FireBird не работал, метнулся к date_format и обломался - аналога date_format в FB нет. В одном справочнике нашёл предложение написать процедуру используя extract, но выглядело это громоздким. Решил поинтересоваться у разработчиков системы, каким образом они решают этот вопрос. Ответили, что вот там вот есть класс, а в нём функция, которая парсит дату регуляркой посредством пхп и всё в таком духе, вызывай мол и пользуйся на здоровье..
Всё же парсинга я избёг и решил вопрос на уровне базы (посмотреть как, можно по ссылке ссылка). Может кто и улучшит результат. Теперь моя приблуда форматит дату через базу, а вся остальная система написаная разрабами подвергается парсингу.

Знаю, что если есть возможность совершить форматирование даты на уровне базы, то это лучше, чем парсить дату посредством пхп. Но на практике я не имел возможности сравнить эти два способа. Насколько форматирование даты на уровне базы выигрывает у парсинга пхп? При каких объёмах обрабатываемой информации это становится заметным и ощутимым? Может кто-нибудь проводил эксперименты или сталкивался на практике с проблемами парсинга относительно date_format. Кто что может сказать по этому поводу?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
На твой вопрос тут никто не ответит, потому как слишком уж он у тебя специфичный. Сервера разные, запросы и прочее тоже. Потому если так боишься тормозов - делай денормализацию даты в рядом стоящее поле в формате 00.00.0000, мое имхо.
 

craz

Нестандартное звание
firebird скажите мне не мертвая ли база? сейчас выпускаются новые версии? по-моему даже в МОЕМ(в плане лет когда там учился) университете его уже зарывали - или я гоню?
 

Руслан

Новичок
c0dex
Сервера разные, запросы и прочее тоже
Ну я не столько применимо к моей ситуации, как к теоретической модели в целом. При каких условиях парс даёт о себе знать. Может кто-то свои случаи опишет. Я поэтому и написал в теорию, просто привёл предысторию почему такой вопрос возник.

craz
firebird скажите мне не мертвая ли база?
Обновления выходят, но по сравнению с MySql мне она действительно показалась "мёртвой". =) Хотя это субъективно конечно. Firebird удобен, как я понял не для веба. Собственно на этой базе и стоит система потому как она работает с оборудованием и писана на С-подобном языке (но туда я не суюсь). И на неё же прикручен вебинтерфейс. Но вопрос не про удобство FB для веб-программеров.
 

AmdY

Пью пиво
Команда форума
на уровне базы такое делать не стоит, а то формат могут ещё 10 раз менять. да и вообще, я использую лишь integer для хранения таймстампа времени. однажды использовал datetime - это был АД.
 

Руслан

Новичок
на уровне базы такое делать не стоит, а то формат могут ещё 10 раз менять.
Не понял. Кто могут менять? И почему всё таки не стоит? На чём основывается это заявление?


однажды использовал datetime - это был АД.
Страно. Сколько лет использовал - всё прекрасно было. На MySql по крайней мере вобще горя с датой не знаю..
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
AmdY
Угу, а потом в phpmyAdmin, чтобы время посмотреть у какой-то записи, из твоего int надо будет приводить все к виду date, ибо так ты хрен поймешь что за дата. Нахрен такие решение, наелся уже.
 

AmdY

Пью пиво
Команда форума
Руслан, c0dex сугубо моё ИМХО, основанное на моём опыте и моём стиле программирования
 

Single

пилот капсулы
firebird это конечно нечто.
Особенно радует совместимость разных версий этой "уникальной" субд.
Помнится нужно было получить доступ к базе из под никсов с учетом отсутствия информации о версии FB под которой собиралась база получили массу не забываемого удовольствия.
 

Духовность™

Продвинутый новичок
AmdY
Угу, а потом в phpmyAdmin, чтобы время посмотреть у какой-то записи, из твоего int надо будет приводить все к виду date, ибо так ты хрен поймешь что за дата. Нахрен такие решение, наелся уже.
это не аргумент. phpmyAdmin - это инструмент, а не законченное приложение для домохозяйки.

Вообще хранить даты можно в любом формате. В php для удобства работы с ними есть объект Datetime, который вертит любые скормленные ему даты в стандартных для него и mysql форматах.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Духовность™
в консоли ты смотришь, как я, или как кто-то в PMA - сугубо пофик. Но если я не могу сразу определить дату у записи - ее надо конвертировать, это уже признак неуважения к тому, кто будет работать с данными на низком уровне. Читай - просто смотреть запись, без доп. операций.

В свое время я работал в одной бонусной компании, считал статистику, хотя пошел туда изначально программистом на php. Так вот в половине таблиц был timestamp, в половине тупо date/datetime. Проверять выгрузку было оочень сложно.
Так вот, какой PHP и datetime, если там нужна выгрузка с консоли данных в 100-200 строчек, а база весит больше 40 Гб?

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

Духовность™

Продвинутый новичок
я же пишу про нормальные человеческие решения, без дополнительных программных средств/операций.
вывод даты в реальных приложениях всегда требует дополнительных программных средств/операций -- конвертации даты в нечто промежуточное, что бы можно было вывести даты в русской нотации. Titestamp в виде числа для этого подходит. И объект Datetime -- что символизирует универсальность такого типа хранения даты. А если тебе надо из консоли что-то там читать, уж извините. Это не аргумент. Мне гораздо приятнее написать в шаблоне

PHP:
Дата: <strong><?=$date->formatDateForPeople()?></strong>
где $date - это объект класса My_Datetime extends Datetime
или написать универсално
PHP:
Дата: <strong><?=$date->format('Y-m-d H:i:s')?></strong>
ВООБЩЕ не заморачиваясь, как у меня в базе хранится дата.
 
Сверху