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ń:
W PostgreSQL dostępne są dwa typy znaczników czasu:
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.