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 valoareatimestamptz
î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
Lasă un răspuns