PostgreSQL

Метка времени PostgreSQL To_char с часовым поясом

Метка времени PostgreSQL To_char с часовым поясом

Методы форматирования PostgreSQL включают полезный набор инструментов для преобразования различных типов данных (дата / время, целые числа, числа с плавающей запятой, числовые) в форматированные строки и преобразования форматированных строк обратно в уникальные типы данных. Впредь иногда нам нужно также конвертировать часовые пояса. Время всегда записывается в формате UTC в метках времени PostgreSQL для формы данных часового пояса, но по умолчанию отображается в браузере, сеансе или локальном времени пользователя. Одна из его вспомогательных функций, на которую мы привыкли полагаться, - это метод TO_CHAR (), который, среди прочего, позволяет использовать метки времени и метки времени с часовым поясом, а также позволяет упорядочивать части метки времени так, как вам нравится. Метка времени, двойная точность, продолжительность, число или числовое значение могут быть преобразованы в строку с помощью метода PostgreSQL TO_CHAR (). Кажется, существует метод с одним аргументом, to_timestamp, который принимает аргумент с двойной точностью и преобразует эпоху Unix в метку времени с использованием часового пояса. В этом посте мы покажем вам, как что-то с этим сделать. Давайте сначала подробнее рассмотрим to_char ().

Синтаксис:

Общий синтаксис функции to_char () следующий:

>> To_char (выражение, формат);

Метод TO_CHAR () в PostgreSQL требует двух утверждений:

В PostgreSQL доступны два типа временных меток:

И вот в чем проблема: стандартная форма данных временной метки не учитывает часовые пояса. И это необходимость SQL (как это могло произойти, кажется, за гранью). Наша основная цель - изучить метку времени to_Char () с часовым поясом. Чтобы начать работу с PostgreSQL с функцией to_char (), откройте оболочку командной строки PostgreSQL и введите значения параметров для обязательного сервера, базы данных, номера порта, имени пользователя и пароля. Оставьте эти соображения незаполненными, если вам нужно использовать параметры по умолчанию, как показано на изображении ниже.

To_char () для строкового числа

Чтобы понять концепцию функции to_Char (), использующей временную метку с часовым поясом, вы должны сначала попробовать пример строковых чисел. Итак, у нас есть число «1897», и мы будем преобразовывать его в «9999».99 'с использованием следующего запроса. Из вывода ниже видно, что номер строки был преобразован в указанный формат.

>> ВЫБРАТЬ to_char (1897, '9999.99 ');

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

>> ВЫБРАТЬ to_char (367.78, '9G999.99 ');

To_char Timestamp с часовым поясом

Чтобы понять концепцию отметки времени с часовым поясом, давайте рассмотрим простой пример. Предположим, вы находитесь в «Пакистане», поэтому сейчас ваш часовой пояс должен быть «PKT».

Пример 01:

Давайте попробуем получить текущую метку времени в запросе SELECT при преобразовании ее в формат даты и времени, как показано в запросе ниже. Термин "TZ" используется для возврата текущего часового пояса. На выходе отображается день, дата, время и часовой пояс.

>> SELECT to_char (CURRENT_TIMESTAMP, 'Day Mon dd, yyyy HH12: MI AM (TZ)');

Давайте изменим наш часовой пояс на "Европа / Рим".

>> УСТАНОВИТЬ Часовой пояс = 'Европа / Рим';

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

Пример 02:

Когда вы указываете часовой пояс в запросе SELECT, тогда в выходных данных не будет отображаться текущий часовой пояс, как показано ниже.

>> ВЫБЕРИТЕ to_char (CURRENT_TIMESTAMP В ЧАСОВОЙ ЗОНЕ 'Азия / Иерусалим', 'гггг HH12: MI AM (TZ)');

Пример 03:

Давайте создадим быструю таблицу с именем "время" с двумя полями. Один относится к типу TIMESTAMP, а другой - к типу TIMESTAMPTZ.

>> СОЗДАТЬ ТАБЛИЦУ время (без_времени TIMESTAMP, with_timezone TIMESTAMPTZ);

Теперь давайте проверим текущий часовой пояс, который мы использовали в нашей системе, используя команду SHOW в оболочке следующим образом:

>> ПОКАЗАТЬ часовой пояс;

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

>> ВСТАВИТЬ В ЗНАЧЕНИЯ времени (сейчас (), сейчас ());

Теперь вы можете получить запись из таблицы time, используя запрос SELECT, как показано ниже. Столбец without_timezone показывает текущую дату и время без часового пояса, а столбец with_timezone показывает местное время с часовым поясом полностью.

>> ВЫБРАТЬ * ИЗ ВРЕМЕНИ;

Давайте изменим часовой пояс на «US / EASTERN» из запроса ниже.

>> УСТАНОВИТЬ ЧАСОВОЙ ПОЯС СЕССИИ «США / ВОСТОК»;

Теперь давайте еще раз проверим таблицу. Вы увидите, как значение столбца with_timezone было отображено в соответствии с часовым поясом «US / EASTERN», но значение «without_timezone» осталось таким же, как и раньше.

>> ВЫБРАТЬ * ИЗ ВРЕМЕНИ;

Пример 04:

Приведем еще несколько примеров для метода to_char (). Предположим, что та же таблица "время" выше. Мы будем преобразовывать значение столбца without_timezone в строку, состоящую из часов, минут, секунд и часового пояса. Давайте попробуем запрос SELECT с использованием метода to_char () для преобразования значения столбца без_временной зоны. Мы упомянули "TZ" в нашем запросе, но он не покажет часовой пояс, потому что значение столбца не состоит из часового пояса. Приведенная ниже команда дает результат:

>> ВЫБРАТЬ to_char (без_времени, 'HH12: MI: SS TZ') FROM time;

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

>> ВЫБРАТЬ to_char (with_timezone, 'HH12: MI: SS TZ') FROM time;

Заключение:

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

Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...