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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение даты и времени в mysql 
V
    Опции темы
MystDeim
Дата 21.10.2008, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Никак не могу выбрать как лучше хранить в TIMESTAMP или INT  smile 

Посоветуйте, пожалуйста, кто что использует в реальных проектах.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
Kesh
Дата 21.10.2008, 10:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



MystDeim, timestamp


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
SamDark
Дата 21.10.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

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



Храню в int, приведённый к GMT +0;


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
SelenIT
Дата 21.10.2008, 13:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Неправильная постановка вопроса. Надо спрашивать не "кто что использует", а "что лучше использовать для такой-то задачи, при таких-то ожидаемых условиях". У каждого способа свои плюсы, минусы и ограничения - например, для записи дат рождения юзеров вообще лучше брать DATETIME, чтоб наверняка не знать проблем с датами до 1970 г. (да и после 2038 - кто знает, сколько проживет эта база?). А если, к примеру, это статистика использования чего-либо, и нужно определить самые активные часы летом - вообще есть смысл разнести дату и время по отдельным полям (DATE и TIME соотв-но), да повесить на каждое отдельный индекс (иначе при сложной выборке база вполне может сказать "шпок";)...

TIMESTAMP наиболее удобен там, для чего предназначен - для "автомаркировки" времени добавления записи в таблицу (только при апдейтах с ним нужно быть осторожным!). INT есть смысл применять в переносимых решениях - чтобы все настройки, связанные со временем, можно было менять через PHP, а не через базу. Места в памяти они занимают одинаково, диапазон допустимых значений тоже один и тот же (до января 2038 года), легко конвертируются друг в друга (TO/FROM_UNIXTIME), но при выводе "как есть" значения таймстемпа более человекочитаемы (что немаловажно при отладке).

Это сообщение отредактировал(а) SelenIT - 21.10.2008, 13:33


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
MystDeim
Дата 21.10.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Для дней рождения я выбрал тип DATE, 
Цитата

рождения юзеров вообще лучше брать DATETIME

Время рождения важно знать только в роддоме smile

Цитата

вообще есть смысл разнести дату и время по отдельным полям (DATE и TIME соотв-но)

Разносить не хочу, так как не хочу проблем с часовыми поясами.

Создал таблицу в ней 2 поля TIMESTAMP и DATETIME, странно но отображаются они одинаково: CCYY-MM-DD hh:mm:ss, хотя в мануале написано, что TIMESTAMP(14) записывается как YYYYMMDDHHMMSS.

странно...
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
bars80080
Дата 21.10.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



а как выводятся?
PM MAIL WWW   Вверх
MystDeim
Дата 21.10.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Код

SELECT `ts`
FROM `user`


2008-10-21 16:39:25
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
bars80080
Дата 21.10.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



формат поля TIMESTAMP(14) попробуй задать
PM MAIL WWW   Вверх
MystDeim
Дата 21.10.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



bars80080, пробовал, глюк какой-то переставить похоже надо.

Стал склоняться к использованию INT
Цитата

Храню в int, приведённый к GMT +0; 

дожно быть удобно

Уже не вижу преимуществ использования TIMESTAMP, у него такие же  ограничения как и при хранении в виде целого числа, при хранении в инт будет проще обрабатывать.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
SelenIT
Дата 21.10.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(MystDeim @  21.10.2008,  14:42 Найти цитируемый пост)
Время рождения важно знать только в роддоме 

Логично;). Я ступил малость.

Цитата(MystDeim @  21.10.2008,  14:42 Найти цитируемый пост)
не хочу проблем с часовыми поясами

Откуда? Сервер-то один, так какая... пардон, разница?

Цитата(MystDeim @  21.10.2008,  14:42 Найти цитируемый пост)
хотя в мануале написано,

От какой версии мануал? Если не путаю, так было по 4-ю включительно, начиная с пятой стало выводиться с разделителями. А вообще - какая разница, как оно отображается? Все равно для юзеров оно наверняка будет форматироваться как надо через DATE_FORMAT, а чтобы не перепутать сегодняшнюю запись с прошлонедельной при отладке - и по-старому, и по-новому читабельность достаточна...

Цитата(MystDeim @  21.10.2008,  16:48 Найти цитируемый пост)
при хранении в инт будет проще обрабатывать

Смотря где и как. Если в самой базе - потребуется одно дополнительное преобразование...

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


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
MystDeim
Дата 21.10.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

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



Спасибо всем за ответы, пришел к выводу, что нужно использовать TIMESTAMP!
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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