Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: DATETIME or INT ?
 
 автор: Mosik   (06.07.2006 в 11:33)   письмо автору
 
 

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

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

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

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

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

   
 
 автор: cheops   (06.07.2006 в 11:47)   письмо автору
 
   для: Mosik   (06.07.2006 в 11:33)
 

>Все время держал дату в формате DATETIME. Но постоянно приходилось ее конвертить в метку
>времени (timestamp) а потом к тому виду, который хочется.
А зачем? Есть замечательная функция MySQL - DATE_FORMAT() при помощи которой можно получить дату в любом формате.

   
 
 автор: hars   (06.07.2006 в 11:52)   письмо автору
 
   для: Mosik   (06.07.2006 в 11:33)
 

Если вносить дату в БД,то лучше и правда INT,меньше места,а timestamp в самой базе используют для регистрации внесения-изменения записи,другими не пользуюсь почти.

   
 
 автор: Trianon   (06.07.2006 в 12:49)   письмо автору
 
   для: Mosik   (06.07.2006 в 11:33)
 

Они держат её в int, поскольку ориентируются не только на MySQL, но и на другие серверы, и соответственно - диалекты языка SQL. Поскольку представление календарных даных и наборы работающих с этими данными функций у всех диалектов отличаются, а INT - он везде INT, писать с ним переносимый SQL-код куда проще.
Опять же, если учесть, что на серверной стороне всё равно приходится иметь дело с нормализованным временем, int всяко предпочтительней.
Ну а администрировать такую базу, соответственно, сложнее - приходится в SELECTах FROM_UNIXTIME писать каждый раз.

Выбор за Вами.

   
 
 автор: Mosik   (07.07.2006 в 14:21)   письмо автору
 
   для: Mosik   (06.07.2006 в 11:33)
 

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

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

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

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

-----------
работаю на форумом Орифлейм

   
 
 автор: cheops   (07.07.2006 в 16:08)   письмо автору
 
   для: Mosik   (07.07.2006 в 14:21)
 

Да, в таком случае целесообразнее хранить дату в INT. Или при выборке преобразовывать её из DATETIME при помощи функции UNIX_TIMESTAMP().

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования