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

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

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

вопрос задан 3.01.2009
karlipoppins
19232 репутация

35 ответов


  • 1584 рейтинг

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

    Если вы имели в виду, что хотите выбрать между использованием метки времени UNIX или собственного поля даты и времени MySQL, перейдите к собственному формату. Вы можете делать вычисления в MySQL таким образом ("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)"), и просто изменить формат значения на метку времени UNIX ("SELECT UNIX_TIMESTAMP(my_datetime)"), когда вы запрашиваете запись, если хотите работать с ней с помощью PHP.

    ответ дан blivet, с репутацией 16335, 3.01.2009
  • 830 рейтинг

    В MySQL 5 и выше значения TIMESTAMP преобразуются из текущего часового пояса в UTC для хранения и преобразуются обратно из UTC в текущий часовой пояс для извлечения. (Это происходит только для типа данных TIMESTAMP, а , а не для других типов, таких как DATETIME. )

    По умолчанию текущим часовым поясом для каждого соединения является время сервера. Часовой пояс можно установить для каждого подключения, как описано в Поддержка часового пояса MySQL Server

    ответ дан Nir, с репутацией 13814, 2.03.2009
  • 438 рейтинг

    Я всегда использую поля DATETIME для чего угодно, кроме метаданных строки (дата создания или изменения)

    Как упомянул в документации MySQL:

    Тип DATETIME используется, когда вам нужны значения, которые содержат как дату, так и время. MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Поддерживается диапазон от 1000-01-01 00:00:00 до 9999-12-31 23:59:59.

    . , ,

    Тип данных TIMESTAMP имеет диапазон от '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC. Он имеет различные свойства в зависимости от версии MySQL и режима SQL, в котором работает сервер.

    Вы, скорее всего, достигнете нижнего предела для TIMESTAMPs общего пользования - e г. хранение даты рождения.

    ответ дан scronide, с репутацией 9303, 4.01.2009
  • 288 рейтинг

    Приведенные ниже примеры показывают, как тип даты TIMESTAMP изменил значения после изменения time-zone to 'america/new_york', где DATETIME не изменилось.

    mysql> show variables like '%time_zone%';
    +------------------+---------------------+
    | Variable_name    | Value               |
    +------------------+---------------------+
    | system_time_zone | India Standard Time |
    | time_zone        | Asia/Calcutta       |
    +------------------+---------------------+
    
    mysql> create table datedemo(
        -> mydatetime datetime,
        -> mytimestamp timestamp
        -> );
    
    mysql> insert into datedemo values ((now()),(now()));
    
    mysql> select * from datedemo;
    +---------------------+---------------------+
    | mydatetime          | mytimestamp         |
    +---------------------+---------------------+
    | 2011-08-21 14:11:09 | 2011-08-21 14:11:09 |
    +---------------------+---------------------+
    
    mysql> set time_zone="america/new_york";
    
    mysql> select * from datedemo;
    +---------------------+---------------------+
    | mydatetime          | mytimestamp         |
    +---------------------+---------------------+
    | 2011-08-21 14:11:09 | 2011-08-21 04:41:09 |
    +---------------------+---------------------+
    

    Я преобразовал свой ответ в статью, чтобы больше людей могли найти это полезным, MySQL: типы данных с указанием даты и времени .

    ответ дан mr_eclair, с репутацией 19999, 21.08.2011
  • 173 рейтинг

    Основное различие заключается в том, что DATETIME является постоянным, а параметр TIMESTAMP зависит от настройки time_zone.

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

    Проще говоря: Если у меня есть база данных в Австралии, и я сделаю дамп этой базы данных для синхронизации / заполнения базы данных в Америке, TIMESTAMP обновится, чтобы отразить реальное время события в новом часовом поясе, а DATETIME будет по-прежнему отражать время события в часовом поясе au .

    Отличным примером использования DATETIME, где должен был использоваться TIMESTAMP, является Facebook, где их серверы никогда не могут точно определить, что за время происходило в разных часовых поясах. Однажды у меня был разговор, в котором говорилось, что я отвечаю на сообщения до того, как сообщение было действительно отправлено. (Это, конечно же, могло также быть вызвано неправильным переводом часовых поясов в программном обеспечении для обмена сообщениями, если время было отправлено, а не синхронизировано. )

    ответ дан ekerner, с репутацией 4007, 14.01.2010
  • 112 рейтинг

    Я принимаю это решение на семантической основе.

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

    Я использую поле даты и времени, когда дата / время могут быть установлены и изменены произвольно. Например, когда пользователь может сохранить изменения позже.

    ответ дан blivet, с репутацией 16335, 3.01.2009
  • 89 рейтинг

    TIMESTAMP - 4 байта против 8 байтов для DATETIME.

    http: // dev. MySQL. ком / док / RefMan / 5. 0 / EN / хранения-требования. HTML

    Но, как сказал скронид, у него есть нижний предел 1970 года. Это здорово для всего, что может случиться в будущем, хотя;)

    ответ дан Alex, с репутацией 15989, 4.01.2009
  • 83 рейтинг
    1. TIMESTAMP - четыре байта против восьми байтов для DATETIME.

    2. Временные метки также легче в базе данных и быстрее индексируются.

    3. Тип DATETIME используется, когда вам нужны значения, которые содержат как дату, так и время. MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Поддерживаемый диапазон: от 1000-01-01 00:00:00 до 9999-12-31 23:59:59.

    Тип данных TIMESTAMP имеет диапазон '1970-01-01 00:00:01' UTC до '2038-01-09 03:14:07' UTC. Он имеет различные свойства в зависимости от версии MySQL и режима SQL, в котором работает сервер.

    1. DATETIME постоянно, в то время как TIMESTAMP зависит от настройки time_zone.
    ответ дан Vivek S, с репутацией 1427, 21.12.2013
  • 80 рейтинг

    Я рекомендую использовать , ни , ни поле DATETIME, ни поле TIMESTAMP. Если вы хотите представить конкретный день в целом (например, день рождения), используйте тип DATE, но если вы более конкретны, вам, вероятно, будет интересно записать фактический момент, а не время (день, неделя, месяц, год). Вместо использования DATETIME или TIMESTAMP, используйте BIGINT и просто сохраняйте количество миллисекунд с начала эпохи (System. currentTimeMillis (), если вы используете Java). Это имеет несколько преимуществ:

    1. Вы избегаете блокировки поставщика. Практически каждая база данных поддерживает целые числа относительно похожим образом. Предположим, вы хотите перейти в другую базу данных. Хотите ли вы беспокоиться о различиях между значениями MySQL DATETIME и о том, как их определяет Oracle? Даже среди разных версий MySQL TIMESTAMPS имеют разный уровень точности. Только недавно MySQL поддерживал миллисекунды в метках времени.
    2. Нет проблем с часовыми поясами. Здесь было несколько проницательных комментариев о том, что происходит с часовыми поясами с различными типами данных. Но является ли это общеизвестным знанием, и все ли ваши коллеги потратят время на его изучение? С другой стороны, довольно сложно запутаться, превращая BigINT в Java. Util. Дата. Использование BIGINT вызывает много проблем с часовыми поясами, чтобы упасть на второй план
    3. Не беспокойтесь о диапазонах или точности. Вам не нужно беспокоиться о том, что будет прервано будущими диапазонами дат (TIMESTAMP только до 2038 года).
    4. Интеграция сторонних инструментов. Используя целое число, это тривиально для сторонних инструментов (например, г. EclipseLink) для взаимодействия с базой данных. Не каждый сторонний инструмент будет иметь такое же понимание «datetime», как MySQL. Хотите попробовать и выяснить в Hibernate, следует ли вам использовать Java. SQL. TimeStamp или Java. Util. Объект Date, если вы используете эти пользовательские типы данных? Использование ваших базовых типов данных делает использование сторонних инструментов тривиальным.

    Эта проблема тесно связана с тем, как хранить денежную стоимость (т.е. е. $ 1. 99) в базе данных. Стоит ли использовать десятичное число, тип денег базы данных или, что хуже всего, двойное число? Все 3 варианта ужасны по многим из перечисленных выше причин Решение состоит в том, чтобы хранить стоимость денег в центах с помощью BIGINT, а затем конвертировать центы в доллары при отображении значения для пользователя. Задача базы данных - хранить данные, а НЕ интерпретировать эти данные. Все эти причудливые типы данных, которые вы видите в базах данных (особенно в Oracle), мало что добавляют, и вы начинаете идти по пути к привязке к поставщикам.

    ответ дан user64141, с репутацией 3437, 11.06.2014
  • 39 рейтинг

    Зависит от приложения, действительно.

    Рассмотрите возможность установки метки времени пользователем на сервере в Нью-Йорке для встречи в Сангхае. Теперь, когда пользователь подключился в Шанхае, он получает доступ к той же отметке времени встречи с зеркального сервера в Токио. Он увидит встречу в токийском времени, смещенную от исходного нью-йоркского времени

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

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

    Отметки времени также легче в базе данных и индексируются быстрее.

    ответ дан ianaré, с репутацией 2492, 26.10.2010
  • 32 рейтинг

    2016 + : я советую установить часовой пояс Mysql на UTC и использовать DATETIME:

    Любые последние внешние рамки (Angular 1/2, реагировать, Vue ,. , , ) может легко и автоматически конвертировать ваше время в формате UTC в местное время.

    Дополнительно:

    (Если вы не можете изменить часовой пояс своих серверов)


    Пример с AngularJs

    // back-end: format for angular within the sql query
    SELECT DATE_FORMAT(my_datetime, "%Y-%m-%dT%TZ")...
    
    // font-end Output the localised time
    {{item.my_datetime | date :'medium' }}
    

    Весь локализованный формат времени доступен здесь: https: // docs. angularjs. org / api / ng / filter / date

    ответ дан Sebastien Horin, с репутацией 5578, 17.02.2016
  • 32 рейтинг

    Поле timestamp является частным случаем поля datetime. Вы можете создать timestamp столбцов, чтобы иметь специальные свойства; это может быть установлено, чтобы обновить себя или создать и / или обновить.

    В терминах «большей» базы данных timestamp имеет несколько специальных триггеров.

    Какой правильный выбор полностью зависит от того, что вы хотите сделать.

    ответ дан Jeff Warnica, с репутацией 649, 3.01.2009
  • 27 рейтинг

    TIMESTAMP всегда находится в UTC (то есть, прошедшие секунды с 1970-01-01 в UTC), и ваш сервер MySQL автоматически преобразует его в дату / время для часового пояса сервера. В долгосрочной перспективе TIMESTAMP - это путь, потому что вы знаете, что ваши временные данные всегда будут в UTC. Например, вы не испортите даты, если перенесетесь на другой сервер или измените настройки часового пояса на вашем сервере.

    ответ дан Sobes, с репутацией 279, 25.08.2010
  • 22 рейтинг

    Сравнение DATETIME, TIMESTAMP и DATE

    enter image description here

    Что это [. доля]?

    • Значение DATETIME или TIMESTAMP может включать в себя конечный дробный Секунды с точностью до микросекунд (6 цифр). В в частности, любая дробная часть в значении, вставленном в DATETIME или столбец TIMESTAMP сохраняется, а не удаляется. Это, конечно, необязательно.

    Источники:

    ответ дан jdc91, с репутацией 536, 11.08.2017
  • 21 рейтинг

    Стоит отметить, что в MySQL вы можете использовать что-то вроде следующего при создании столбцов таблицы:

    on update CURRENT_TIMESTAMP
    

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

    ответ дан leejmurphy, с репутацией 691, 6.01.2012
  • 19 рейтинг

    Я бы всегда использовал метку времени Unix при работе с MySQL и PHP. Основной причиной этого является то, что в PHP по умолчанию используется метод даты с датой , в качестве параметра используется временная метка, поэтому анализ не требуется

    Чтобы получить текущую метку времени Unix в PHP, просто наберите time();
    а в MySQL делай SELECT UNIX_TIMESTAMP();.

    ответ дан Mark Davidson, с репутацией 4724, 3.01.2009
  • 14 рейтинг

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

    Например, рассмотрим таблицу user с полем РЕГИСТРАЦИЯ ДАТА . В этой таблице user, если вы хотите узнать время последнего входа определенного пользователя, укажите поле типа timestamp , чтобы поле было обновлено.

    Если вы создаете таблицу из phpMyAdmin , настройка по умолчанию обновит поле 3894676001 timestamp , когда произойдет обновление строки. Если поле вашей отметки времени не обновляется с обновлением строки, вы можете использовать следующий запрос, чтобы поле отметки времени было автоматически обновлено.

    ALTER TABLE your_table
          MODIFY COLUMN ts_activity TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
    
    ответ дан Kannan Prasad, с репутацией 1497, 6.02.2012
  • 13 рейтинг

    Тип данных временной метки хранит дату и время, но в формате UTC, а не в текущем формате часового пояса, как дата и время. И когда вы выбираете данные, отметка времени снова преобразует их в текущее время часового пояса.

    Предположим, что вы находитесь в США и получаете данные с сервера, который имеет часовой пояс США. Тогда вы получите дату и время в соответствии с часовым поясом США. Столбец типа данных временной метки всегда обновляется автоматически при обновлении его строки. Так что может быть полезно отследить, когда конкретная строка была обновлена ​​в последний раз.

    Для более подробной информации вы можете прочитать сообщение в блоге Отметка времени против даты и времени .

    ответ дан Arvind, с репутацией 1569, 20.12.2012
  • 12 рейтинг

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

    Еще одна вещь, заслуживающая рассмотрения:

    Если вы создаете приложение, вы никогда не знаете, каким образом ваши данные могут быть использованы в дальнейшем. Если вам придется сравнить, скажем, кучу записей в вашем наборе данных, скажем, с кучей элементов от стороннего API, и, скажем, поместить их в хронологическом порядке, вы будете рады Unix метки времени для ваших строк. Даже если вы решите использовать метки времени MySQL, сохраните метку времени Unix в качестве страховки.

    ответ дан Oliver Holmberg, с репутацией 613, 5.01.2012
  • 11 рейтинг

    Остерегайтесь изменения отметки времени при выполнении оператора UPDATE для таблицы. Если у вас есть таблица со столбцами «Name» (varchar), «Age» (int) и «Date_Added» (отметка времени), и вы выполняете следующую инструкцию DML

    UPDATE table
    SET age = 30
    

    , тогда каждое значение в вашем столбце «Date_Added» будет изменено на текущую временную метку.

    ответ дан Lloyd Banks, с репутацией 16343, 4.10.2013
  • 11 рейтинг

    Основное отличие -

    • Индекс на метку времени - работает
    • Индекс на Datetime - Не работает

    посмотрите на этот пост , чтобы увидеть проблемы с индексированием Datetime

    ответ дан Charles Faiga, с репутацией 6219, 7.03.2014
  • 10 рейтинг

    Я нашел непревзойденную полезность в способности TIMESTAMP автоматически обновлять себя, основываясь на текущем времени, без использования ненужных триггеров. Это только я, хотя TIMESTAMP UTC, как было сказано.

    Он может отслеживать различные часовые пояса, поэтому, если вам нужно, например, отобразить относительное время, то время в формате UTC - это то, что вам нужно.

    ответ дан Marc DiMillo, с репутацией 416, 1.11.2011
  • 10 рейтинг

    Еще одно различие между меткой времени и датой-временем заключается в том, что вы не можете по умолчанию установить значение NULL.

    ответ дан ecleel, с репутацией 5967, 19.01.2014
  • 10 рейтинг

    Ссылка взята из этой статьи:

    Основные отличия:

    TIMESTAMP используется для отслеживания изменений в записях и обновления каждый раз, когда изменяется запись. DATETIME используется для хранения определенного и статического значения, на которое не влияют какие-либо изменения в записях.

    TIMESTAMP также зависит от различных настроек, связанных с TIME ZONE. DATETIME является постоянным.

    TIMESTAMP внутренне преобразовал текущий часовой пояс в UTC для хранения, а во время поиска преобразовал обратно в текущий часовой пояс. DATETIME не может сделать это.

    TIMESTAMP поддерживаемый диапазон: ‘1970-01-01 00:00:01 'UTC до -01 2038-01-19 03:14:07' UTC DATETIME поддерживаемый диапазон: -01 1000-01-01 от 00:00:00 до 9999-12-31 23:59:59 ′

    ответ дан Anvesh, с репутацией 3041, 7.02.2016
  • 8 рейтинг

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

    ответ дан Hans, с репутацией 1054, 4.01.2009
  • 8 рейтинг

    В моем случае я установил UTC как часовой пояс для всего: системы, сервера базы данных и т. Д. каждый раз, когда я могу. Если моему клиенту требуется другой часовой пояс, я настраиваю его в приложении.

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

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

    Итак, чтобы подвести итог, я ценю это преимущество отметки времени:

    • готов к использованию в международных приложениях (с несколькими часовыми поясами)
    • легкие миграции между часовыми поясами
    • довольно легко вычислить разницу (просто вычтите обе отметки времени)
    • не беспокойтесь о датах в / из летнего периода

    По всем этим причинам я выбираю UTC & amp; поля отметок времени, где это возможно. И я избегаю головных болей;)

    ответ дан rogerpro, с репутацией 124, 24.02.2017
  • 7 рейтинг

    Мне нравится метка времени Unix, потому что вы можете конвертировать в числа и просто беспокоиться о числе. Плюс вы добавляете / вычитаете и получаете длительность и т. Д. Затем преобразуйте результат в дату в любом формате. Этот код определяет, сколько времени в минутах прошло между отметкой времени документа и текущим временем.

    $date  = $item['pubdate']; (etc ...)
    $unix_now = time();
    $result = strtotime($date, $unix_now);
    $unix_diff_min = (($unix_now  - $result) / 60);
    $min = round($unix_diff_min);
    
    ответ дан user723220, с репутацией 364, 28.04.2011
  • 6 рейтинг

    TIMESTAMP требует 4 байта, тогда как DATETIME требует 8 байтов.

    ответ дан Mwangi Thiga, с репутацией 737, 23.06.2016
  • 4 рейтинг

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

    , который затем еще можно настроить на местное время в PHP.

    DATETIME, который будет выбран с FROM_UNIXTIME( integer_timestamp_column ).

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

    ответ дан Martin Zeitler, с репутацией 9019, 23.05.2016
  • 4 рейтинг

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

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

    ответ дан Eliptical view, с репутацией 1160, 3.11.2016
  • 4 рейтинг

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

    ответ дан Mahdi Jazini, с репутацией 507, 27.10.2016
  • 3 рейтинг

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

    ответ дан Matthew, с репутацией 4536, 28.06.2016
  • 3 рейтинг
    +---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
    |                                       TIMESTAMP                                       |                                 DATETIME                                 |
    +---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
    | TIMESTAMP requires 4 bytes.                                                           | DATETIME requires 8 bytes.                                               |
    | Timestamp is the number of seconds that have elapsed since January 1, 1970 00:00 UTC. | DATETIME is a text displays 'YYYY-MM-DD HH:MM:SS' format.                |
    | TIMESTAMP supported range: ‘1970-01-01 00:00:01′ UTC to ‘2038-01-19 03:14:07′ UTC.    | DATETIME supported range: ‘1000-01-01 00:00:00′ to ‘9999-12-31 23:59:59′ |
    | TIMESTAMP during retrieval converted back to the current time zone.                   | DATETIME can not do this.                                                |
    | TIMESTAMP is used mostly for metadata i.e. row created/modified and audit purpose.    | DATETIME is used mostly for user-data.                                   |
    +---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
    
    ответ дан Premraj, с репутацией 25713, 12.04.2018
  • 1 рейтинг

    Это зависит.

    Тип DATETIME используется для значений, которые содержат части даты и времени. MySQL извлекает и отображает значения DATETIME в формате «ГГГГ-ММ-ДД ЧЧ: ММ: СС». Поддерживаемый диапазон: от «1000-01-01 от 00:00:00» до «9999-12-31 23:59:59».

    Тип данных TIMESTAMP используется для значений, которые содержат как дату, так и время. У TIMESTAMP есть диапазон от «1970-01-01 00:00:01» UTC до «2038-01-19 03:14:07» UTC.

    MySQL преобразует значения TIMESTAMP из текущего часового пояса в UTC для хранения и обратно из UTC в текущий часовой пояс для получения. (Это не происходит для других типов, таких как DATETIME. ) По умолчанию текущим часовым поясом для каждого соединения является время сервера. Часовой пояс может быть установлен для каждого соединения отдельно. Пока настройка часового пояса остается постоянной, вы получаете то же значение, которое храните. Если вы сохраните значение TIMESTAMP, а затем измените часовой пояс и получите значение, полученное значение будет отличаться от значения, которое вы сохранили. Это происходит потому, что один и тот же часовой пояс не использовался для преобразования в обоих направлениях. Текущий часовой пояс доступен как значение системной переменной time_zone.

    ответ дан hechen0, с репутацией 311, 18.07.2018
  • 0 рейтинг

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

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

    ответ дан curiosity, с репутацией 317, 30.06.2018