PostgreSQL metode oblikovanja uključuju korisnu zbirku alata za prevođenje različitih vrsta podataka (datum / vrijeme, cijeli broj, pokretna zarez, numerička) u formatirane nizove i prevođenje oblikovanih nizova natrag u jedinstvene tipove podataka. Od sada, ponekad moramo pretvoriti i vremenske zone. Vrijeme se uvijek bilježi u UTC u PostgreSQL vremenskim oznakama za obrazac podataka vremenske zone, ali se prema zadanim postavkama prikazuje u pregledniku, sesiji ili lokalnom vremenu korisnika. Jedna od njegovih pomoćnih funkcija na koje smo se pouzdali je metoda TO_CHAR (), koja omogućuje vremenske oznake i vremenske oznake s vremenskom zonom, između ostalih oblika, te vam omogućuje da rasporedite dijelove vremenske oznake kako želite. Vremenska oznaka, dvostruka preciznost, trajanje, broj ili numerička vrijednost mogu se pretvoriti u niz metodom PostgreSQL TO_CHAR (). Čini se da postoji metoda s jednim argumentom, 'to_timestamp', koja uzima argument dvostruke preciznosti i transformira se iz Unix epohe u vremensku oznaku pomoću vremenske zone. U ovom postu pokazat ćemo vam kako nešto poduzeti u vezi s tim. Pogledajmo prvo pobliže to_char ().
Sintaksa:
Opća sintaksa za funkciju to_char () je kako slijedi:
>> To_char (izraz, format);Metoda TO_CHAR () u PostgreSQL-u treba dvije tvrdnje:
- Izraz: Vremenska oznaka, trajanje, broj, dvostruka preciznost ili numerička vrijednost koja se prevodi u niz prema određenom formatu mogu se koristiti kao izrazi.
- Format: Stil u kojem će se prikazati izlazni niz. Format se može razlikovati ovisno o vrsti izraza, npr.g., broj, datum.
U PostgreSQL-u su dostupne dvije vrste vremenskih žigova:
- Vremenska oznaka: bez vremenske zone.
- Timestamptz: s vremenskom zonom.
I ovdje je problem: standardni obrazac podataka o vremenskoj oznaci ne zna za vremenske zone. A to je nužnost SQL-a (kako se to moglo dogoditi, čini se izvan). Naš glavni fokus je naučiti vremensku oznaku to_Char () s vremenskom zonom. Da biste započeli raditi na PostgreSQL-u s funkcijom 'to_char ()', otvorite ljusku naredbenog retka PostgreSQL i dostavite vrijednosti parametara za obavezni poslužitelj, bazu podataka, broj porta, korisničko ime i lozinku. Ostavite ova razmatranja neispunjenima ako trebate unijeti zadane zadane parametre kao što je prikazano na donjoj slici.
To_char () Za niz niza
Da biste razumjeli koncept funkcije to_Char () pomoću vremenske oznake s vremenskom zonom, prvo morate isprobati primjer brojeva nizova. Dakle, imamo broj '1897' i pretvorit ćemo ga u '9999.99 'formatu koristeći upit u nastavku. Iz donjeg izlaza možete vidjeti da je broj niza pretvoren u navedeni format.
>> ODABIR to_char (1897, '9999.99 ');
Evo još jedne ilustracije za konverziju. Ovaj smo put broj pretvorili u drugi format koji sadrži "zarez". Znak 'G' koristit će se za određivanje zareza.
>> ODABIR to_char (367.78, '9G999.99 ');
To_char vremenska oznaka s vremenskom zonom
Da bismo razumjeli vremensku oznaku s konceptom vremenske zone, razmotrimo jednostavan primjer. Pretpostavimo da se nalazite u 'Pakistanu', pa vaša vremenska zona trenutno mora biti 'PKT'.
Primjer 01:
Pokušajmo dohvatiti trenutnu vremensku oznaku u SELECT upitu dok je pretvaramo u format Date-time, kao što je prikazano u upitu ispod. Izraz "TZ" koristi se za vraćanje trenutne vremenske zone. Izlaz prikazuje dan, datum, vrijeme i vremensku zonu.
>> ODABIR to_char (CURRENT_TIMESTAMP, 'Dan ponedjeljak dd, gggg HH12: MI AM (TZ)');
Promijenimo svoju vremensku zonu u 'Europa / Rim'.
>> SET TimeZone = 'Europa / Rim';
Dobit ćete drugo vrijeme, datum i vremensku zonu nakon isprobavanja istog SELECT upita, kao što je prikazano.
Primjer 02:
Kada u upitu SELECT navedete vremensku zonu, tada izlaz neće prikazati trenutnu vremensku zonu prema dolje navedenom izlazu.
>> ODABERITE to_char (TEKUĆE VREMENSKO KAMPANJE U VRIJEME ZONE 'Azija / Jeruzalem', 'gggg HH12: MI AM (TZ)');
Primjer 03:
Stvorimo brzu tablicu pod nazivom 'vrijeme' s dva polja. Jedan je tipa TIMESTAMP, a drugi TIMESTAMPTZ.
>> IZRADI TABELU vrijeme (bez_vremenske zone TIMESTAMP, sa_vremenske zone TIMESTAMPTZ);
Sada provjerimo trenutnu vremensku zonu koju smo koristili u našem sustavu pomoću naredbe SHOW u ljusci kako slijedi:
>> POKAŽI vremensku zonu;
Sada morate umetnuti trenutne vrijednosti datuma i vremena trenutne vremenske zone koje ste koristili na uređaju u tablicu 'vrijeme' pomoću funkcije 'sada ()' kao što je prikazano dolje.
>> UMESTI U VRIJEDNOSTI vremena (sada (), sada ());
Sada možete dohvatiti zapis iz tablice 'vrijeme' pomoću upita SELECT kao u nastavku. Stupac 'without_timezone' prikazuje trenutni datum i vrijeme bez vremenske zone, dok stupac 'with_timezone' prikazuje lokalno vrijeme s vremenskom zonom u potpunosti.
>> ODABERI * OD vremena;
Promijenimo vremensku zonu u 'US / EASTERN' iz upita u nastavku.
>> POSTAVITE VREMENSKU ZONU SESIJE 'US / EASTERN';
Ajmo sada provjeriti tablicu. Vidjet ćete kako je prikazana vrijednost stupca 'with_timezone' prema vremenskoj zoni 'US / EASTERN', ali vrijednost 'without_timezone' je ista kao i prije.
>> ODABERI * OD vremena;
Primjer 04:
Imajmo još nekoliko primjera za metodu to_char (). Pretpostavimo isto "vrijeme" gornje tablice. Pretvorit ćemo vrijednost stupca 'without_timezone' u niz koji se sastoji od sati, minuta, sekundi i vremenske zone. Pokušajmo s SELECT upitom pomoću metode to_char () za pretvorbu vrijednosti stupca 'without_timezone'. U našem smo upitu spomenuli 'TZ', ali neće prikazati vremensku zonu jer se vrijednost stupca ne sastoji od vremenske zone. Navedena naredba daje izlaz:
>> ODABIR to_char (bez_vremenske zone, 'HH12: MI: SS TZ') IZ vremena;
Ajmo sada isprobati isti upit u slučaju drugog stupca 'with_timezone', da ga pretvorimo u niz sati, minuta, sekundi i vremenske zone. Ovaj put prikazat će i vremensku zonu s vremenom koristeći upit u nastavku.
>> ODABIR to_char (with_timezone, 'HH12: MI: SS TZ') IZ vremena;
Zaključak:
Budući da problem sa / bez vremenske zone utječe ne samo na particioniranje tablice, preporučujem da koristite vrstu vremenske zone kad god je to izvedivo. Gotovo sve smjernice raspravljale su o tome kako izvršiti čišćenje ovisno o vremenu u PostgreSQL-u pomoću lokalnih sati. Ispravno rješenje osjetljivo na vremensku zonu dodaje malo komplikacija, ali u budućnosti bi vas moglo spasiti problema.