Какой тип данных является правильным для хранения времени в SQL? - PullRequest
1 голос
/ 19 октября 2011

Вот моя таблица прямо сейчас (с использованием mysql):

SQL Table: koko_table
  name varchar(140)
  status varchar(140)
  time TIMESTAMP

Моя проблема в основном в том, что у меня есть форма (использующая php), которую пользователь использует для хранения данных только в столбце состояния, а мой столбец времени фиксирует время как постоянные данные, когда пользователь сохраняет данные в столбце состояния. Я думаю, что я не использовал точный DATATYPE для столбца времени, потому что каждый раз, когда я посещаю свою базу данных, столбец времени имеет разные значения.

Какой может быть правильный тип данных для хранения времени ввода статуса пользователем в виде неизменяемых данных.

Ответы [ 3 ]

3 голосов
/ 19 октября 2011

Лучшим типом данных будет DATETIME.

1 голос
/ 19 октября 2011

Вы можете использовать TIMESTAMP или DATETIME в MySQL для хранения даты и времени.

Хотя есть различия:

  • TIMESTAMP использует 4байты, DATETIME 8 байтов.

  • Метки времени могут находиться в диапазоне от 1970 до 2038, а даты и времени могут быть в диапазоне от 1000-01-01 00:00:00 до 9999-12-32 23:59:59.

  • TIMESTAMP значения преобразуются из текущего часового пояса в UTC для хранения и преобразуются обратно из UTC в текущий часовой пояс (сервера) для извлечения.Этого не происходит для значений DATETIME, когда часовой пояс не подразумевается. Поля

  • Datetime должны быть объявлены в операциях INSERT, в то время как поля timestamp имеют специальную функцию, котораяпервая временная метка таблицы (по умолчанию) автоматически вставляется или обновляется при каждой операции INSERT или UPDATE с текущей временной меткой.(Это, вероятно, то, что вы видите в своем сценарии.) Вы можете изменить это поведение, поэтому только Вставки или только Обновления устанавливают отметку времени на текущую отметку времени.См. Документы MySQL: свойства отметки времени

Чтобы, например, отметка времени автоматически сохранялась во вставках, но не изменялась во время обновлений, вы можете установить:

ALTER TABLE TableName
  CHANGE TimeStampName TimeStampName TIMESTAMP DEFAULT CURRENT_TIMESTAMP ;
0 голосов
/ 19 октября 2011

Я бы предпочел DATETIME (длинное число) или сохранить его в виде форматированной строки, как 2011/10/18 13:50.Первый лучше по производительности, а второй легче редактировать на phpMyAdmin или чем-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...