Rezumat: în acest tutorial, veți învăța despre PostgreSQL timestamp tipuri de date, inclusiv timestamp și timestamptz. Veți învăța, de asemenea, cum să utilizați unele funcții la îndemână pentru a gestiona mai eficient datele de marcare temporală.,

Introducere în PostgreSQL timestamp

PostgreSQL oferă cu două tipuri de date temporale pentru manipularea timestamp:

  • timestamp: un marcaj de timp, fără orar unul.
  • timestamptz: marca de timp cu un fus orar.

timestamp datatype vă permite să stocați atât Data cât și ora. Cu toate acestea, nu are date despre fusul orar., Aceasta înseamnă că atunci când schimbați fusul orar al serverului dvs. de baze de date, valoarea timestamp stocată în baza de date nu se va schimba automat.

timestamptz datatype este marca de timp cu fusul orar. timestamptz datatype este un tip de date data și ora de fus orar conștient.

PostgreSQL stochează timestamptz în valoare UTC.

  • când introduceți o valoare într-o coloană timestamptz, PostgreSQL convertește valoarea timestamptz într-o valoare UTC și stochează valoarea UTC în tabel.,
  • când interogați timestamptz din Baza de date, PostgreSQL convertește valoarea UTC înapoi la valoarea de timp a fusului orar setat de serverul bazei de date, de utilizator sau de conexiunea curentă la baza de date.

Observați că ambele timestamp și timestamptz folosește 8 biți pentru stocarea timestamp valori așa cum se arată în următoarea interogare:

Code language: SQL (Structured Query Language) (sql)

este important să rețineți că timestamptz valoarea este stocată ca un UTC valoare. PostgreSQL nu stochează date de fus orar cu valoarea timestamptz.,

PostgreSQL timestamp exemplu

Să aruncăm o privire la un exemplu de utilizare timestamp și timestamptz pentru a avea o mai bună înțelegere a modului PostgreSQL se ocupă de ei.

Mai întâi, creați un tabel care constă din ambele coloane timestamp timestamptz.

Code language: SQL (Structured Query Language) (sql)

apoi, setați fusul orar al serverului de baze de date la America/Los_Angeles.,

Code language: SQL (Structured Query Language) (sql)

apropo, puteți vedea curent fusul orar folosind SHOW TIMEZONE command:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Apoi, se introduce un rând nou în timstamp_demo tabel:

După aceea, de interogare a datelor din timestamp și timestamptz coloane.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

interogarea returnează același timestamp valorile inserate valori.,

în cele din urmă, schimbați fusul orar al sesiunii curente la America/New_York și interogați din nou datele.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

valoarea timestamp coloana nu se schimba, întrucât valoarea din timestamptz coloana este ajustat la noul fus orar de 'America/New_York'.

În general, este o bună practică de a utiliza timestamptz datatype pentru a stoca datele marca de timp.,>

Să se ocupe de timestamp de date în mod eficient, PostgreSQL oferă unele funcții utile, după cum urmează:

Obtinerea ora actuală

Pentru a obține curent timestamp utilizați NOW() funcție, după cum urmează:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Sau puteți folosi CURRENT_TIMESTAMP:

Code language: SQL (Structured Query Language) (sql)

Pentru a obține ora curentă, fără dată, utilizați CURRENT_TIME:

Code language: SQL (Structured Query Language) (sql)

Rețineți că ambele CURRENT_TIMESTAMP și CURRENT_TIME întoarce timpul curent cu fusul orar.,

pentru a obține ora din zi în formatul șirului, utilizați funcția timeofday().

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Converti intre orare

Pentru a converti un marcaj de timp pentru un alt fus orar, utilizați timezone(zone, timestamp) function.

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

curent fusul orar este America/Los_Angeles.,

To convert 2016-06-01 00:00 to America/New_York timezone, you use the timezone() function as follows:

Code language: SQL (Structured Query Language) (sql)
Code language: SQL (Structured Query Language) (sql)

Note that we pass the timestamp as a string to the timezone() function, PostgreSQL casts it to timestamptz implicitly., Este mai bine să arunce un timestamp valoare timestamptz tip de date în mod explicit ca următoarea declarație:

Code language: SQL (Structured Query Language) (sql)

În acest tutorial, trebuie introdus la PostgreSQL timestamp tip de date și a arătat cum să folosească unele funcții utile pentru manipularea timestamp valori.

  • a fost acest tutorial util ?
  • YesNo