Должен ли я использовать тип данных datetime или timestamp в MySQL?

Вы порекомендовали бы использовать datetime или timestamp и почему (используя MySQL)?

Я работаю с PHP на стороне сервера.

2493
03 янв. '09 в 19:14
источник поделиться
36 ответов
  • 1
  • 2

Пока не указано, что DEFAULT CURRENT_TIMESTAMP работает только с полями Timestamp, но не с типом DateTime.

Это становится актуальным для таблиц MS Access, которые могут использовать только DateTime, но не Timestamp.

4
03 нояб. '16 в 22:27
источник

Связанные вопросы


Похожие вопросы

Я просто использую unsigned BIGINT при сохранении UTC...

который по-прежнему можно настроить на локальное время в PHP.

DATETIME выбирается с помощью FROM_UNIXTIME( integer_timestamp_column ).

Очевидно, что в этом столбце должен быть установлен индекс, иначе не было бы прогресса.

4
23 мая '16 в 14:20
источник

Многие ответы здесь предлагают хранить как временную метку в случае, когда вы должны представлять четко определенные моменты времени. Но вы также можете иметь моменты времени с datetime, если вы сохраняете их все в UTC по соглашению.

3
28 июня '16 в 10:50
источник

Я перестал использовать datetime в своих приложениях после того, как столкнулся со многими проблемами и ошибками, связанными с часовыми поясами. ИМХО в большинстве случаев использовать timestamp лучше, чем datetime время.

Когда вы спрашиваете, который час? и ответ приходит как что-то вроде "2019-02-05 21:18:30", это не завершенный, не определенный ответ, потому что ему не хватает другой части, в каком часовом поясе? Вашингтон? Москва? Пекин?

Использование datetime без часового пояса означает, что ваше приложение имеет дело только с 1 часовым поясом, однако временные метки дают вам преимущества datetime а также гибкость показа одного и того же точного момента времени в разных часовых поясах.

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

  1. Для удобства ваших клиентов вы хотите показать им время в зависимости от предпочитаемых часовых поясов, не заставляя их делать математику, и переводить время в значимый часовой пояс. все, что вам нужно, это изменить часовой пояс, и весь код вашего приложения будет одинаковым (на самом деле вы всегда должны определять часовой пояс в начале приложения или обработку запросов в случае приложений PHP)

    SET time_zone = '+2:00';
    
  2. Вы изменили страну, в которой находитесь, и продолжили работу по сохранению данных, просматривая их в другом часовом поясе (без изменения фактических данных).

  3. Вы принимаете данные от разных клиентов по всему миру, каждый из них вводит время в своем часовом поясе.

Короче

datetime= приложение поддерживает 1 часовой пояс (как для вставки, так и для выбора)

timestamp= приложение поддерживает любой часовой пояс (как для вставки, так и для выбора)


Этот ответ предназначен только для того, чтобы подчеркнуть гибкость и простоту временных отметок, когда речь идет о часовых поясах, и не охватывает никаких других отличий, таких как размер столбца, диапазон или дробь.

3
05 февр. '19 в 22:18
источник

Если вы хотите ГАРАНТИРОВАТЬ, ваше приложение НЕ будет работать в феврале 2038 года, используйте TIMESTAMP. Обратитесь к вашему REFMAN за ДИАПАЗОНОМ поддерживаемых дат.

1
29 марта '19 в 17:54
источник

timestamp - это текущее время события, записанного компьютером через сетевой протокол времени (NTP).

datetime - это текущий часовой пояс, заданный в вашей конфигурации PHP.

0
30 июня '18 в 3:20
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос