Какая разница между отметкой времени () и отметкой времени ()? - PullRequest
0 голосов
/ 12 октября 2018

В чем разница между методами timestamps () и timestampsTz () в построителе схем Laravel?Я пытался найти в Google, но не смог найти никакой помощи.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

В основном timestampsTz () означает Timestamp with Timezone, тогда как timestamps () похоже на Timestamp without timezone

TimestampsTz() - представление для определенного момента времени.Корректировка этого времени производится часовым поясом, связанным с вашей системой.

Обычный timestamps() больше похож на обычные часы.

Посмотрите на этот пример:

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

Примечание: Каждый раз, когда хранится с помощью timestampsTz (), сохраняется в UTC (Всемирное координированное время).

Полагаю, было бы неплохо использовать timestamp without timezone, когда все ваши данные наверняка находятся в той же зоне, или у вас там есть другой слой, который обрабатывает преобразование времени.

Я нашел хороший пример на StackExchange , который я процитирую здесь:

Например, представьте, что вы, скажем,2013-06-15 (еще не в летнее время) запланировали какое-то событие на 2013-01-15 10:00 (которое уже будет в летнее время), а в 2013-06-15 ваш регион был назначен для принятия летнего времени;но через некоторое время правительство изменило правило и заявило, что ваш регион больше не будет использовать летнее время, и внезапно ваше запланированное время станет 2013-01-15 11:00 (вместо 10:00), что если вы используете метку времени WITHчасовой пояс, и держите ваши конфигурации TZ в актуальном состоянии.Конечно, вы также можете заметить, что такие случаи можно обрабатывать и с часовым поясом, если вы отслеживаете изменения правил в интересующих вас регионах / часовых поясах и обновляете соответствующие записи.

Обновление:

В базе данных нормальный timestamps() будет выглядеть как

2004-10-19 10:23:54

, тогда как timestampsTz() выглядит как

2004-10-19 10:23:54+02

Обновление 2:

Эти функции в Laravel доступны для каждого типа базы данных.Но это отличается только для PostgreSQL.Посмотрите документы: PostgreSQL Timestamp .В других базах данных информация о часовом поясе включается в метку времени автоматически.

Во всех других базах данных это будет иметь тот же вывод.

0 голосов
/ 12 октября 2018

timestampsTz() = Добавляет обнуляемые столбцы эквивалентных столбцов TIMESTAMP (с указанием часового пояса).1007 * добавляет часовой пояс.

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