PostgreSQL

Znacznik czasu PostgreSQL To_char ze strefą czasową

Znacznik czasu PostgreSQL To_char ze 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) na sformatowane łańcuchy i tłumaczenie sformatowanych łańcuchów z powrotem na unikalne typy danych. Odtąd czasami musimy również przeliczać strefy czasowe. Czas jest zawsze rejestrowany w UTC w znacznikach czasu PostgreSQL dla formularza danych strefy czasowej, ale jest wyświetlany domyślnie w przeglądarce, sesji lub czasie lokalnym użytkownika. Jedną z jego funkcji pomocniczych, na których polegamy, jest metoda TO_CHAR(), która umożliwia między innymi umieszczanie znaczników czasu i znaczników czasu ze strefą czasową oraz umożliwia rozmieszczenie fragmentów znacznika czasu w dowolny sposób. Znacznik czasu, podwójna precyzja, czas trwania, liczba lub wartość liczbowa mogą zostać przekonwertowane na ciąg znaków za pomocą metody PostgreSQL TO_CHAR(). Wydaje się, że istnieje metoda jednoargumentowa, „to_timestamp”, która przyjmuje argument o podwójnej precyzji i przekształca z epoki Uniksa na znacznik czasu przy użyciu strefy czasowej. W tym poście pokażemy Ci, jak coś z tym zrobić. Przyjrzyjmy się najpierw to_char().

Składnia:

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

>> To_znak( wyrażenie, format );

Metoda TO_CHAR() w PostgreSQL wymaga dwóch asercji:

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

I oto problem: standardowy formularz danych sygnatury czasowej nie zna stref czasowych. I jest to konieczność SQL (jak to mogło nastąpić, wydaje się poza tym). Naszym głównym celem jest nauka to_Char() znacznik czasu ze strefą czasową. Aby rozpocząć pracę z PostgreSQL za pomocą funkcji 'to_char()', otwórz powłokę wiersza poleceń PostgreSQL i podaj wartości parametrów dla obowiązkowego serwera, bazy danych, numeru portu, nazwy użytkownika i hasła. Pozostaw te uwagi niewypełnione, jeśli chcesz użyć domyślnych wyznaczonych parametrów, jak pokazano na poniższym obrazku.

To_char() Dla numeru ciągu

Aby zrozumieć koncepcję funkcji to_Char() używającej znacznika czasu ze strefą czasową, musisz najpierw wypróbować przykład liczb ciągów. Mamy więc numer „1897” i przekonwertujemy go na „9999”.Format 99' przy użyciu poniższego zapytania. Z poniższych danych wyjściowych widać, że numer ciągu został przekonwertowany na określony format.

>> WYBIERZ do_znaku(1897, '9999.99');

Oto kolejna ilustracja do konwersji. Tym razem przekonwertowaliśmy liczbę na inny format, w której znajduje się „przecinek”. Znak „G” będzie używany do określenia przecinka.

>> WYBIERZ do_znaku(367.78, „9G999”.99');

To_char znacznik czasu ze strefą czasową

Aby zrozumieć pojęcie znacznika czasu ze strefą czasową, 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ć aktualny znacznik czasu w zapytaniu SELECT podczas konwertowania go do formatu Data-czas, jak pokazano w poniższym zapytaniu. Termin „TZ” jest używany do zwrócenia aktualnej strefy czasowej. Dane wyjściowe wyświetlają dzień, datę, godzinę i strefę czasową.

>> SELECT to_char(CURRENT_TIMESTAMP, 'Dzień Pon dd, rrrr HH12:MI AM (TZ)');

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

>> USTAW strefę czasową= 'Europa/Rzym';

Po wypróbowaniu tego samego zapytania SELECT otrzymasz inny czas, datę i strefę czasową, jak pokazano.

Przykład 02:

Po określeniu strefy czasowej w zapytaniu SELECT dane wyjściowe nie będą pokazywać bieżącej strefy czasowej zgodnie z poniższymi danymi wyjściowymi.

>> SELECT to_char(CURRENT_TIMESTAMP W STREFIE CZASOWEJ 'Azja/Jerozolima', 'rrrr HH12:MI AM (TZ)');

Przykład 03:

Stwórzmy szybką tabelę o nazwie „czas” z dwoma polami. Jeden jest typu TIMESTAMP, a drugi typu TIMESTAMPTZ.

>> CREATE TABLE time( without_timezone TIMESTAMP, with_timezone TIMESTAMPTZ);

Teraz sprawdźmy aktualną strefę czasową, której używaliśmy w naszym systemie za pomocą polecenia SHOW w powłoce w następujący sposób:

>> POKAŻ strefę czasową;

Teraz musisz wstawić aktualne wartości daty i czasu aktualnej strefy czasowej, których używałeś na swoim urządzeniu w tabeli "czas" za pomocą funkcji "now()" jak pokazano poniżej.

>> WSTAW W WARTOŚCI czasu (now(), now());

Teraz możesz pobrać rekord z tabeli „czas” za pomocą zapytania SELECT, jak poniżej. Kolumna „without_timezone” pokazuje aktualną datę i godzinę bez strefy czasowej, natomiast kolumna „with_timezone” pokazuje czas lokalny z pełną strefą czasową.

>> WYBIERZ * Z czasu;

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

>> USTAW STREFĘ CZASOWĄ SESJI 'USA/WSCHODNIA';

Teraz jeszcze raz sprawdźmy tabelę. Zobaczysz, jak wartość kolumny „with_timezone” została wyświetlona zgodnie ze strefą czasową „US/EASTERN”, ale wartość „without_timezone” jest taka sama jak wcześniej.

>> WYBIERZ * Z czasu;

Przykład 04:

Zróbmy jeszcze kilka przykładów metody to_char(). Załóżmy, że w powyższej tabeli „czas”. Będziemy konwertować wartość kolumny „without_timezone” na ciąg składający się z godzin, minut, sekund i strefy czasowej. Wypróbujmy zapytanie SELECT przy użyciu metody to_char() do konwersji wartości kolumny „bez_strefy czasowej”. W naszym zapytaniu wspomnieliśmy „TZ”, ale nie pokaże strefy czasowej, ponieważ wartość kolumny nie zawiera strefy czasowej. Poniższe polecenie daje wynik:

>> SELECT to_char(bez_timezone, 'HH12:MI:SS TZ') FROM time;

Teraz wypróbujmy to samo zapytanie w przypadku drugiej kolumny „with_timezone”, aby przekonwertować ją na ciąg godzin, minut, sekund i strefy czasowej. Tym razem pokaże strefę czasową z czasem za pomocą poniższego zapytania.

>> SELECT to_char(with_timezone, 'HH12:MI:SS TZ') FROM time;

Wniosek:

Ponieważ problem z/bez strefy czasowej dotyczy nie tylko partycjonowania tabel, zalecam używanie typu strefy czasowej, gdy tylko jest to możliwe. Prawie wszystkie wytyczne omawiały, jak przeprowadzić zależne od czasu czyszczenie w PostgreSQL przy użyciu lokalnych godzin. Właściwe rozwiązanie uwzględniające strefę czasową wprowadza niewielkie komplikacje, ale może uchronić Cię przed problemami w przyszłości.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...