sql >> Database teknologi >  >> RDS >> Mysql

Vil ændring af en MySQL-tidszone ændre værdierne af DateTime-felter i en database?

Det burde det i princippet ikke. Der er forskellige grunde til, at det ikke bør ændre sig, afhængigt af typen af ​​dine værdier:mest DATETIME og TIMESTAMP.

DATETIME-værdier konverteres aldrig, så de er uafhængige af tidszonen.

TIMESTAMP-værdier konverteres (direkte citat fra manualen her --- jeg antager, at du har en ret nyere version af MySQL) "fra den aktuelle tidszone til UTC til lagring og tilbage fra UTC til den aktuelle tidszone til hentning. (Denne forekommer ikke for andre typer såsom DATETIME.) Som standard er den aktuelle tidszone for hver forbindelse serverens tid. Tidszonen kan indstilles på basis af per-forbindelse. Så længe tidszoneindstillingen forbliver konstant, kan du få den samme værdi tilbage, som du gemmer. Hvis du gemmer en TIMESTAMP-værdi og derefter ændrer tidszonen og henter værdien, er den hentede værdi forskellig fra den værdi, du har gemt. Dette sker, fordi den samme tidszone ikke blev brugt til konvertering i begge retninger." (fra http://dev.mysql.com/doc/refman /5.5/da/datetime.html ).

Så i begge tilfælde ændres de data, der faktisk er lagret på serveren, ikke (hvilket er, som det skal være), men de værdier, som dine forespørgsler viser, kan være forskellige før og efter.



  1. Hvorfor tillader MySQL eksplicit prædikatlåsning INSERT-sætninger uden for prædikatlåsen

  2. Få forrige og næste række fra rækker valgt med (WHERE) betingelser

  3. Vælg alle kolonner, der er større end en værdi

  4. Skift primær nøgle