MySQL: Datetime Versus Stempel data Types

MySQL: Datetime Versus Stempel datatyper

timedatatyper i MySQL kan være forvirrende. Forhåpentligvis vil dette eksemplet og diskusjon bidra til å forklare forskjellene i tidsstempel og datetime datatyper


Fra MySQL referanse:.

DATETIME typen er brukes for verdier som inneholder både dato og klokkeslett deler. MySQL henter og viser datetime-verdier i "ÅÅÅÅ-MM-DD TT: MM: SS 'format. Det området som støttes er "1000-01-01 00:00:00" til "9999-12-31 23:59:59".

TIMESTAMP datatypen brukes for verdier som inneholder både dato og klokkeslett deler. TIMESTAMP har en rekke "1970-01-01 00:00:01" UTC til '2038-01-19 03:14:07' UTC.

En stor forskjell mellom disse to datatyper er at TIMESTAMP datatype verdier blir konvertert fra gjeldende tidssone til UTC for lagring formål og konverteres tilbake fra UTC til gjeldende tidssone når de brukes. De datetime datatype verdier er uendret i forhold til tidssonen

Dette eksemplet er en god øvelse i å demonstrere forskjellen mellom disse to datatypene

 mysql >..; vise variabler som «% TIME_ZONE% '; + ------------------ + --------------------- + | VARIABLE_NAME | Verdi | + ------------------ + --------------------- + | system_time_zone | India Standard Time || TIME_ZONE | Asia /Calcutta | + ------------------ + --------------------- + 2 rader i settet (0,00 sek) 


Du kan se våre nåværende tidssone. Under dette miljøet, la oss lage en tabell med de to datatyper og fylle den med det samme tidsmessig informasjon

 opprette tabellen datedemo (mydatetime datetime, mytimestamp timestamp);. Query OK, 0 rader berørt (0,05 sek) 
 sette inn datedemo verdier ((nå ()), (nå ())); Query OK, 1 rad påvirket (0,02 sek) 
 velg * fra datedemo; + ---------- ----------- + --------------------- + | mydatetime | mytimestamp | + --------------------- + --------------------- + | 2011-08-21 14:11:09 | 2011-08-21 14:11:09 | + --------------------- + ---------------- ----- + en rad i sett (0,00 sek) 


på dette punktet datetime og tidsstempel datatyper har forblitt de samme verdiene. La oss endre tidssonen se resultatene

 SET TIME_ZONE = "Amerika /new_york";. Query OK, 0 rader berørt (0,00 sek) 
 velg * fra datedemo; + ------ --------------- + --------------------- + | mydatetime | mytimestamp | + --------------------- + --------------------- + | 2011-08-21 14:11:09 | 2011-08-21 04:41:09 | + --------------------- + ---------------- ----- + en rad i sett (0,00 sek) 


eksempelet ovenfor viser hvordan TIMESTAMP dato type endret verdiene etter endring av tidssone til "Amerika /new_work" hvor DATETIME er uendret.