Voorafgaand aan de rest van mijn antwoord, zou ik u op dit moment willen aanbevelen dat als u een optie heeft om uw toepassing te wijzigen om UTC te gebruiken, dit u nu en in de toekomst veel verdriet zal besparen.
Gezien de context van uw vraag, neem ik aan dat dit geen optie is en dat u een systeem aanpast dat is ontworpen om MySQL te gebruiken in een traditionele serveromgeving waar u gewoon de tijdzone kunt wijzigen en dat er codelogica is die verwacht deze tijdzone en kan niet gemakkelijk worden aangepast om UTC te gebruiken.
Maar als je het echt nodig hebt om als PST op te slaan, lees dan verder.
Je hebt gelijk dat mySql standaard de tijdzone van de server gebruikt voor tijdstempelopslag, maar je veronderstelling dat de tijdzones van RDS-instanties zijn ingesteld op basis van de AWS-regio waarin ze worden gelanceerd, is onjuist - alle RDS-instanties worden gestart met hun tijdzone ingesteld als UTC, en deze configuratie kan niet worden gewijzigd:
Uw enige optie is dus om de tijdzone op elke verbinding die uw toepassing maakt met de database-instantie in te stellen op PST. U kunt de SET SESSION time_zone = 'PST'
. gebruiken query uit te voeren in elke verbinding die een toepassing maakt door de twee stappen te volgen hier te vinden
:
-
Maak de volgende opgeslagen procedure (UTC-8 is PST):
-
Maak verbinding met uw instantie en voer de volgende opdracht uit:
-
Mogelijk moet u
EXECUTE
. verlenen machtigingen voor de gebruikers die verbinding zullen maken met de database, anders kunt u een verbindingsfout krijgen:
Nu moet elke query die door een client op uw RDS-instantie wordt uitgevoerd, PST gebruiken zonder enige toepassingslogica te wijzigen en zonder dat eerder opgeslagen tijdstempels in de database moeten worden bijgewerkt.