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

Tidszonespecifik Åbn nu-funktion

  1. Læs om understøttelse af tidszone i MySQL , og sørg for, at din mysql-database er konfigureret med aktuelle tidszonetabeller. Opdater regelmæssigt.

  2. Knyt hver lokation til en navngivet IANA/Olson-tidszone, såsom "America/Los_Angeles" , eller "Europa/London" . Se listen her . Hvis du har lat/lon, kan du slå tidszonen op via en af ​​disse metoder .

  3. Brug MySQL CONVERT_TZ funktion til at konvertere den aktuelle UTC-tid til den specifikke zone. For eksempel CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asien/Tokyo')

  4. Brug ugedagen og tidspunktet for den konverterede tid til at tjekke dagen og rækkevidden i stedets indtastning.

Bemærk også, at andre måske foreslår, at man kun gemmer UTC i databasen eller konverterer alle værdierne til UTC, før man sammenligner med "nu"-værdien. Hver af disse tilgange kan mislykkes i edge-tilfælde, da UTC-ugedagen ikke nødvendigvis er den samme ugedag som i hver tidszone.

En anden tilgang, som vil arbejde, men det kræver mere indsats, er at forudbestemme de specifikke UTC-start- og stoptider i et stykke tid i fremtiden (i det mindste til den næste, men måske længere). Så kan du scanne denne liste med UTC-tiden. Dette fungerer bedre i skala, når du har tusindvis eller flere individuelle poster at kontrollere. Men i mindre skalaer er det normalt ikke omkostningerne værd.

Ligeledes kunne du have en baggrundsproces, der bare sætter et "nu åben"-flag på hver post, men det skulle konstant arbejde mod din database, og du kunne aldrig tjekke efter andre tidspunkter end "nu".




  1. Hvad er den reneste måde at få den aktuelle lokale tid i Postgres på?

  2. Valg af poster mellem to datoer

  3. Brug af URL-parametre i MYSQL-søgning

  4. Sådan returneres resultatet af mange udvalgte udsagn som én tilpasset tabel