PostgreSQL

PostgreSQL To_char Timestamp With Timezone

PostgreSQL To_char Timestamp With Timezone

Metodele de formatare PostgreSQL includ o colecție utilă de instrumente pentru traducerea diferitelor tipuri de date (dată / oră, număr întreg, virgulă mobilă, numerică) în șiruri formatate și traducerea șirurilor formatate înapoi la tipuri de date unice. De acum înainte, uneori trebuie să convertim și fusurile orare. Momentul este întotdeauna înregistrat în UTC în marcajele de timp PostgreSQL pentru formularul de date de fus orar, dar este afișat implicit în browser, sesiune sau ora locală a utilizatorului. Una dintre funcțiile sale de asistență pe care ne-am bazat este metoda TO_CHAR (), care permite marcaje de timp și marcaje de timp cu fus orar, printre alte forme, și vă permite să aranjați piesele unei marcaje de timp oricât doriți. Un timestamp, o precizie dublă, durata, un număr sau o valoare numerică pot fi convertite într-un șir folosind metoda PostgreSQL TO_CHAR (). Se pare că există o metodă cu un singur argument, „to_timestamp”, care ia un argument cu precizie dublă și se transformă din epoca Unix în timestamp folosind fusul orar. Vă vom arăta cum să faceți ceva în acest sens în această postare. Să aruncăm o privire mai atentă la to_char () mai întâi.

Sintaxă:

Sintaxa generală pentru funcția to_char () este după cum urmează:

>> To_char (expresie, format);

Metoda TO_CHAR () din PostgreSQL are nevoie de două afirmații:

Există două tipuri de timestamp disponibile în PostgreSQL:

Și iată problema: formularul de date standard cu marcaj de timp nu știe ce fusuri orare. Și este o necesitate SQL (cum ar fi putut să apară pare dincolo). Obiectivul nostru principal este să învățăm to_Char () marca de timp cu un fus orar. Pentru a începe să lucrați la PostgreSQL cu funcția „to_char ()”, deschideți shell-ul de linie de comandă PostgreSQL și furnizați valorile parametrilor pentru serverul obligatoriu, baza de date, numărul portului, numele de utilizator și parola. Lăsați aceste considerații neîmplinite dacă trebuie să consumați parametrii desemnați implicit, așa cum se arată în imaginea de mai jos.

To_char () Pentru numărul șirului

Pentru a înțelege conceptul funcției to_Char () folosind timestamp cu fus orar, trebuie mai întâi să încercați exemplul numerelor șirului. Deci avem un număr „1897” și îl vom converti în „9999”.Format 99 'folosind interogarea de mai jos. Din ieșirea de mai jos, puteți vedea că numărul șirului a fost convertit în formatul specificat.

>> SELECT to_char (1897, '9999.99 ');

Iată o altă ilustrație pentru conversie. De data aceasta am convertit un număr într-un format diferit, cu „virgulă” în el. Caracterul „G” va fi folosit pentru a specifica o virgulă.

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

To_char Timestamp cu TimeZone

Pentru a înțelege marca Timestamp cu conceptul fusului orar, să luăm în considerare un exemplu simplu. Să presupunem că vă aflați în „Pakistan”, deci fusul dvs. orar trebuie să fie „PKT” chiar acum.

Exemplul 01:

Să încercăm să preluăm marcajul de timp curent în interogarea SELECT în timp ce îl convertim în format Data-oră, așa cum se arată în interogarea de mai jos. Termenul „TZ” este folosit pentru a reda fusul orar actual. Ieșirea afișează ziua, data, ora și fusul orar.

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

Să ne schimbăm fusul orar în „Europa / Roma”.

>> SET TimeZone = 'Europa / Roma';

Veți obține o oră, o dată și un fus orar diferite după ce încercați aceeași interogare SELECT, așa cum se arată.

Exemplul 02:

Când specificați fusul orar în interogarea SELECT, ieșirea nu va afișa fusul orar curent conform ieșirii de mai jos.

>> SELECT to_char (CURRENT_TIMESTAMP LA ZONA ORARĂ 'Asia / Ierusalim', 'aaaa HH12: MI AM (TZ)');

Exemplul 03:

Să creăm un tabel rapid numit „timp” cu două câmpuri. Una este de tip TIMESTAMP, iar cealaltă este de tip TIMESTAMPTZ.

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

Acum, să verificăm fusul orar curent pe care l-am folosit în sistemul nostru folosind comanda SHOW din shell, după cum urmează:

>> AFISAȚI fusul orar;

Acum trebuie să introduceți valorile curente ale datei și orei fusului orar curent pe care l-ați folosit pe dispozitivul dvs. în tabelul „ora” utilizând funcția „acum ()”, așa cum se arată mai jos.

>> INSERAȚI ÎN VALORILE timpului (acum (), acum ());

Acum puteți prelua înregistrarea din tabelul „timp” folosind interogarea SELECT, după cum se arată mai jos. Coloana „without_timezone” arată data și ora curente fără fus orar, în timp ce coloana „with_timezone” arată ora locală cu fusul orar complet.

>> SELECT * DIN timp;

Să schimbăm fusul orar în „SUA / EST” din interogarea de mai jos.

>> SETAȚI ZONA ORARĂ A SESIUNII „SUA / EST”;

Acum să verificăm din nou tabelul. Veți vedea cum a fost afișată valoarea coloanei „cu_timp_zonală” în funcție de fusul orar „SUA / ESTE”, dar valoarea „fără_timp_zonală” este aceeași ca înainte.

>> SELECT * DIN timp;

Exemplul 04:

Să avem câteva exemple pentru metoda to_char (). Să presupunem același tabel de mai sus „timp”. Vom converti valoarea coloanei „fără_timezonă” într-un șir format din ore, minute, secunde și fus orar. Să încercăm interogarea SELECT utilizând metoda to_char () pentru conversia valorii coloanei 'fără_timezonă'. Am menționat „TZ” în interogarea noastră, dar nu va afișa fusul orar, deoarece valoarea coloanei nu constă din fusul orar. Comanda menționată mai jos oferă rezultatul:

>> SELECT to_char (without_timezone, 'HH12: MI: SS TZ') FROM timp;

Acum să încercăm aceeași interogare în cazul celeilalte coloane „with_timezone”, pentru ao converti în șirul de ore, minute, secunde și fus orar. De data aceasta va afișa fusul orar cu timpul, folosind și interogarea de mai jos.

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

Concluzie:

Deoarece problema cu / fără fusul orar afectează mai mult decât simpla partiționare a tabelelor, vă recomand să utilizați tipul de fus orar ori de câte ori este posibil. Aproape toate liniile directoare au discutat despre cum se poate face o purjare dependentă de timp în PostgreSQL folosind orele locale. O soluție adecvată, sensibilă la fusul orar, adaugă puține complicații, dar vă poate salva de probleme în viitor.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...