Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > DATETIME or INT ?


Автор: Mosik 6.7.2006, 10:39
Все время держал дату в формате DATETIME. Но постоянно приходилось ее конвертить в метку времени (timestamp) а потом к тому виду, который хочется.

Вчера посмотрел в каком формате держат дату разработчики продуктов phpBB, osCommerce и echoArticles. Они все держат время в поле типа INT! 

Вот и думаю. Не с балды же ведь разработчики БД реализовали типы данных даты и времени. Так почему многие держат в INT?

Я понимаю что это личный выбор каждого разработчика, в каком формате держать дату. Вот и прошу высказаться по этому поводу. (в поиске был)

Прошу высказаться кто в каком формате держит дату в БД и аргументировать свой выбор. 

Автор: DENNN 6.7.2006, 11:52
Цитата(Mosik @  6.7.2006,  10:39 Найти цитируемый пост)
о постоянно приходилось ее конвертить в метку времени (timestamp) а потом к тому виду, который хочется.

Непонятно зачем. Когда будет ясность в этом вопросе можно будет ответить и на 

Цитата(Mosik @  6.7.2006,  10:39 Найти цитируемый пост)
Прошу высказаться кто в каком формате держит дату в БД

 

Автор: Mosik 6.7.2006, 11:57
Цитата(DENNN @  6.7.2006,  11:52 Найти цитируемый пост)
Непонятно зачем. Когда будет ясность в этом вопросе можно будет ответить и на 

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

Автор: cyberface 7.7.2006, 12:56
Мне тоже было бы интересно услушать мнение людей. Лично я храню в формате timestamp, а при извлечении использую функции вот так:
FROM_UNIXTIME(UNIX_TIMESTAMP(time),'%H:%i %d.%m.%y')
 

Автор: Mosik 7.7.2006, 13:24
Почитал вчера комментарии тут и на других форумах и почти согласился с мыслью что буду держать дату в DATETIME.

А потом меня посетила следующая мысль:
У меня есть класс, который отвечает за работу с таблицей статей (продуктов, сайтов, нет значения чего...). В нем есть метод getItem, который возвращает массив с данными статьи. Везде в коде проекта я вызываю данный метод объекта для получения элемента. Зачем думаю объяснять не стоит.

Так вот, в разных местах проекта мне может понадобиться дата в разных форматах. И использовать функции mySQL тут уже не получится так как запрос к БД идет в методе getItem, который для всего проекта один.

Получается что в данном случае целесообразней дату хранить как INT и средствами PHP ее конвертить в любой формат?
Какие будут мысли по этому поводу?

-------------
работаю над http://www.webconsultant.com.ua/ 

Автор: Gold Dragon 10.7.2006, 11:32
Цитата(Mosik @  7.7.2006,  13:24 Найти цитируемый пост)
Получается что в данном случае целесообразней дату хранить как INT и средствами PHP ее конвертить в любой формат?
Не получается. Средствами PHP можно легко конвертировать и формат DATETIME.

Из лично опыта... раньше использовал INT, сейчас уже не помню, но операции с датой в этом формате в MySQL не очень удобны. И в итоге перешёл на DATETIME. По крайней мере данные выглядят читаемы. А в PHP я написал небольшую функцию, которая готовит мне DATETIME в нужный мне формат. Плюс ко всему, мне не нужно будет изгаляться, когда понадобится делать другой формат, достаточно просто поправить функцию
 

Автор: Kefir 10.7.2006, 12:30
Mosik, если тебе нунразные форматы, то можно ведь добавить один параметр в функцию getItem($dateFormat) {}, который потом проставлять в запрос к БД, а по дефолту этот параметр выставить тот, который ты чаще всего используешь, итого, получаем - если необходимо получить итем со стандартным форматов даты - пиши getTime(), если же какой-либо другой - просто напросто getItem("new format"). И проблема отпадает. 

Автор: BASILIO 18.3.2008, 11:42
Gold Dragon, 

Если не секрет, почему изменил своему принцепу, вот просто две темы нашол с твоим коментом, тута ты ещё был за ИНТ: http://forum.vingrad.ru/index.php?showtopic=41106&view=findpost&p=315243

А сейчас уже против.... лично мне нужно сейчас будет отсчитывать 24 часа, почему-то считаю что проще всего будет сделать так:

Код

$t
if (time()-$t > 86400) {echo "opozdal";}


вот и думаю, хранить ету метку как ИНТ или как Датавремя....

Автор: Serkys 18.3.2008, 14:58
Я храню время в виде timestamp. Удобно тем, что в шаблонах smarty можно запросто приводить дату к тому формату, который нужен сейчас, не углубляясь в код. С функциями обработки даты/времени в MySQL почти не знаком, может быть поэтому мне кажется удобным хранить время в timestamp'е.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)