2012-03-21 4 views
4

Когда мне нужно хранить информацию о времени и времени, как лучше всего хранить ее в базе данных?
Если я храню их как представление String, например. получить текущую временную метку (например, с помощью Date) и сохранить представление String в БД - это хорошая идея?
Какова наилучшая практика для этого? Каковы любые минусы?Как лучше сохранить отметку времени или дату в базе данных?

ответ

15

Лучшей практикой является использование типа TIMESTAMP или DATE в базе данных. Все основные поставщики баз данных поддерживают эти стандартные типы данных SQL.

Помимо оптимизации производительности и хранения, вы получите выразительность, и в зависимости от используемой базы данных вы сможете использовать множество функций и операций манипулирования датами. Подумайте о сравнении дат, добавление даты, добавив интервалы дат (например, что завтра день), и т.д ...

Обратите внимание, что ...

  • Если вы используете Oracle, нужно учитывать, что DATE также содержит информацию о времени
  • Если вы используете SQLite, остерегайтесь того, что типы datetime могут иметь числовое или текстовое сходство. То есть они сохраняются как числа или текст.
  • Если вы используете SQL Server, Sybase (ASE и SQL Anywhere), SQLite, диалект конкретной версии типа TIMESTAMP данных называется DATETIME (SQL сервера TIMESTAMP фактически VARBINARY(8))
  • По крайней мере, H2, HSQLDB, MySQL, Sybase SQL Anywhere поддерживают как TIMESTAMP, так и DATETIME типы данных синонимы.
+0

Что я могу получить с помощью, например, «Строка»? – Jim

+0

@Jim: я отвечу на этот вопрос в моем обновленном ответе –

1

Его наилучшим образом использовать тип данных timestamp как в MySQL, так и в T-SQL.

Использование временных меток позволяет выполнять калибровки по данным гораздо более легким запросам, добавлениям или дням подстановки, месяцам, годам, сколько угодно. Также заказать проще.

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

Большинство языков, таких как PHP, также имеют функции отображения временных меток в выбранном вами формате, чтобы вы могли конвертировать временные метки в более читаемые форматы.

Наконец, в плагинах javascript/jquery часто требуются полные временные метки для выполнения вычислений по датам и времени jQuery timeago, например.

+1

Опасайтесь, что в (SQL Server) T-SQL 'timestamp' на самом деле является' varbinary (8) '... Тип данных временной метки SQL называется' datetime' в T-SQL ... –

1

Лучшей практикой является использование типа данных DATE/TIMESTAMP, доступного у вашего поставщика баз данных, одним из преимуществ наличия основного типа данных является то, что «в будущем вы можете запрашивать конкретные условия времени», например, в будущем вы можете требуют

  1. Создания отчета конкретного месяца/год
  2. Сформировать отчет между двумя датами, то есть между 01/05/11 и 01/02/12 и т.д.
  3. для отображения даты мудрого отчета (т.е. общий объем продаж 15 августа, 11), хотя это также можно сделать с использованием типа данных String, я думаю, что сравнение даты намного быстрее, чем представления String (char или Varchar и т. д.). 4 .....

Помимо вышеперечисленных условий, это еще много случаев, для которых разумнее использовать дату? TimeStamp вместо String ....

Смежные вопросы