Znacznik czasu PostgreSQL to_char z strefą czasową

Znacznik czasu PostgreSQL to_char z strefą czasową

Metody formatowania PostgreSQL obejmują użyteczny zbiór narzędzi do tłumaczenia różnych typów danych (data/godzina, liczba całkowita, zmiennoprzecinkowa, numeryczna) do sformatowanych sznurków i tłumaczenia strun sformatowanych z powrotem na unikalne typy danych. Odtąd czasami musimy również konwertować strefy czasowe. Czas jest zawsze rejestrowany w UTC w znacznikach czasu PostgreSQL dla formularza danych strefy czasowej, ale jest domyślnie wyświetlany w przeglądarce, sesji lub czasie lokalnym użytkownika. Jedną z jego funkcji pomocniczych, na których polegaliśmy, jest metoda to_char (), która umożliwia między innymi strefę czasu i strefy czasu, umożliwia ułożenie kawałków znacznika czasu, jak chcesz, jak chcesz. Znacznik czasu, podwójna precyzja, czas trwania, liczba lub wartość liczbowa można przekonwertować na ciąg za pomocą metody PostgreSQL to_char (). Wydaje się, że istnieje metoda pojedynczego argumentu „to_timestamp”, która przyjmuje argument podwójnego precyzyjnego i przekształca epok UNIX w znacznik czasu za pomocą strefy czasowej. Pokażamy ci, jak coś z tym zrobić w tym poście. Najpierw przyjrzyjmy się bliżej na to_char ().

Składnia:

Ogólna składnia funkcji to_char () jest następująca:

>> to_char (wyrażenie, format);

Metoda to_char () w PostgreSQL potrzebuje dwóch twierdzeń:

  • Wyrażenie: Znacznik czasu, czas trwania, liczba, podwójna precyzja lub wartość liczbowa, która jest przetłumaczona na ciąg zgodnie z konkretnym formatem, mogą być używane jako wyrażenia.
  • Format: Styl, w którym zostanie wyświetlony ciąg wyjściowy. Format może być inny w zależności od typu wyrażenia, e.G., numer, data.

W PostgreSQL dostępne są dwa typy znaczników czasu:

  • Znak czasu: bez strefy czasowej.
  • Timestamptz: z strefą czasową.

A oto problem: standardowy formularz danych znaczników czasu jest nieświadomy stref czasowych. I jest to konieczność SQL (jak mogło się zdarzyć poza nią). Naszym głównym celem jest nauczenie się znacznika czasu to_char () z strefą czasową. Aby rozpocząć pracę nad PostgreSQL z funkcją „to_char ()”, otwórz powłokę wiersza polecenia PostgreSQL i dostarcz wartości parametrów dla serwera obowiązkowego, bazy danych, numeru portu, nazwy użytkownika i hasła. Pozostaw te rozważania niewypełnione, jeśli chcesz zużywać domyślne wyznaczone parametry, jak pokazano na poniższym obrazku.

To_char () dla numeru ciągu

Aby zrozumieć koncepcję funkcji To_Char (. Mamy więc numer „1897” i przekształcimy go w „9999.Format 99 'za pomocą poniższego zapytania. Na podstawie wyjścia poniżej widać, że numer ciągu został przekonwertowany na określony format.

>> Wybierz to_char (1897, 9999.99 ');

Oto kolejna ilustracja konwersji. Tym razem przekonwertowaliśmy liczbę na inny format o „przecinku”. Znak „g” zostanie użyty do określenia przecinka.

>> Wybierz to_char (367.78, 9G999.99 ');

Timestamp TO_CHAR z strefą czasową

Aby zrozumieć znacznik czasu z koncepcją strefy czasowej, rozważmy prosty przykład. Załóżmy, że jesteś w „Pakistanie”, więc twoja strefa czasowa musi być teraz „pkt”.

Przykład 01:

Spróbujmy pobrać bieżący znacznik czasu w zapytaniu, konwertując go do formatu daty, jak pokazano w pytaniu poniżej. Termin „tz” służy do oddania bieżącej strefy czasowej. Wyjście wyświetla dzień, datę, godzinę i strefa czasowa.

>> Wybierz to_char (current_timestamp, 'day mon dd, rr rh12: mi am (tz)');

Zmieńmy naszą strefę czasową na „Europa/Rzym”.

>> Set TimeZone = „Europe/Rome”;

Otrzymasz inną godzinę, datę i stref czasu po wypróbowaniu tego samego wyboru, jak pokazano.

Przykład 02:

Po określaniu strefy czasowej w zapytaniu Wybierz, wówczas wyjście nie wyświetli bieżącej strefy czasowej zgodnie z poniższym wyjściem.

>> Wybierz to_char (current_timestamp w strefie czasowej „Asia/Jerusalem”, „Rrryy HH12: Mi am (tz)”);

Przykład 03:

Utwórzmy szybką tabelę o nazwie „czas” z dwoma polami. Jeden ma typ czasu, a drugi to typ czasu.

>> Utwórz czas na tabeli (bez znacznika czasu_timezone, z mimestamptz with_timeZone);

Sprawdźmy teraz bieżącą stref czasową, której używamy w naszym systemie, używając polecenia show w powładzie w następujący sposób:

>> pokazuj strefę czasową;

Teraz musisz wstawić bieżące wartości daty i godziny bieżącej strefy czasowej, których używałeś na urządzeniu w tabeli „czas” za pomocą funkcji „now ()”, jak pokazano poniżej.

>> Wstaw do wartości czasowych (teraz (), teraz ());

Teraz możesz pobrać rekord z tabeli „czas” za pomocą zapytania Wybierz jak poniżej. Kolumna „bez_timezone” pokazuje bieżącą datę i godzinę bez strefy czasowej, podczas gdy kolumna „with_timezone” pokazuje całkowicie lokalny czas z strefą czasową.

>> Wybierz * Z czasu;

Zmieńmy strefę czasową na „USA/Wschodni” z poniższego zapytania.

>> Ustaw strefę czasową sesji „USA/Wschodni”;

Teraz sprawdźmy ponownie stół. Zobaczysz, w jaki sposób wartość kolumny „with_timeZone” została wyświetlona zgodnie z czasem „USA/Wschodniej”, ale wartość „bez_timezone” jest taka sama jak wcześniej.

>> Wybierz * Z czasu;

Przykład 04:

Miejmy więcej przykładów metody To_Char (). Załóż tę samą powyższą tabelę „Czas”. Będziemy przekształcić kolumnę „bez_timezone” na ciąg, który składa się z godzin, minut, sekund i strefy czasowej. Wypróbujmy zapytanie Wybierz za pomocą metody TO_CAR () do konwersji wartości kolumny „bez_timezone”. Wspomnialiśmy o „TZ” w naszym zapytaniu, ale nie pokaże strefy czasowej, ponieważ wartość kolumny nie składa się z strefy czasowej. Wydane polecenie głowowe daje wyjście:

>> Wybierz to_char (bez_timezone, „HH12: mi: ss tz ') od czasu;

Teraz wypróbujmy to samo zapytanie w przypadku drugiej kolumny „with_timeZone”, aby przekonwertować je na ciąg godzin, minut, sekund i stref. Tym razem z czasem pokaże strefę czasową, używając poniższego zapytania.

>> Wybierz to_char (z_timezone, „HH12: mi: ss tz ') od czasu;

Wniosek:

Ponieważ problem z/bez strefy czasowej wpływa na nie tylko partycjonowanie tabeli, zalecam użycie typu strefy czasowej w dowolnym momencie. Prawie wszystkie wytyczne omówiono, jak wykonywać zależne od czasu oczyszczanie w PostgreSQL za pomocą godzin lokalnych. Właściwe, wrażliwe na strefę czasowe rozwiązanie dodaje niewielkich komplikacji, ale może zaoszczędzić przed kłopotami w przyszłości.