MySQL: я должен использовать поля "дата" и "время", когда у меня уже есть поле метки времени? - PullRequest
1 голос
/ 13 апреля 2010

У меня есть таблица MySQL, в которой есть поле «date_added» (дата), поле «time_added» (время) и поле «timestamp» (int).

Впоследствии я узнал, что могу в любом случае преобразовать метку времени в дату или время, так значит ли это, что я могу избавиться от других полей даты / времени и сохранить только метку времени?

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 13 апреля 2010

В макете, который вы описываете, я не вижу причин, чтобы иметь более одного поля. Вы можете использовать столбец DATETIME или, если вам нравится магия БД, столбец TIMESTAMP (не путайте его с временными метками Unix). Первые TIMESTAMP в таблице можно настроить на самообновление.

Стоит также отметить, что некоторые платформы допускают очень узкие диапазоны дат при использовании меток времени Unix (может быть проблематично сохранять дату до 1970 года или после 2038 года), тогда как тип MySQL DATETIME варьируется от 1000 до 9999.

http://dev.mysql.com/doc/refman/5.1/en/datetime.html

0 голосов
/ 13 апреля 2010

Не могли бы вы избавиться от этих полей? Да.

Должны ли вы избавиться от этих полей? Возможно нет.

Если вы обнаружите, что делаете запросы конкретно по дате или времени, гораздо эффективнее хранить и индексировать их отдельно, чем делать что-то вроде WHERE DATE(timestamp) = '01-01-2001', которое не индексируется и неэффективно.

Зависит от запросов к этой таблице.

0 голосов
/ 13 апреля 2010

Да, просто помните, что 32-битная временная метка исчерпает значения через 20 с лишним лет.

0 голосов
/ 13 апреля 2010

Да! Преобразовать при необходимости с помощью запроса.

...