sql >> Databasteknik >  >> RDS >> Mysql

Tidszonsspecifik funktionen Öppna nu

  1. Läs om tidszonsstöd i MySQL , och se till att din mysql-databas är konfigurerad med aktuella tidszonstabeller. Uppdatera regelbundet.

  2. Associera varje plats med en namngiven IANA/Olson-tidszon, till exempel "America/Los_Angeles" , eller "Europa/London" . Se listan här . Om du har lat/lon kan du slå upp tidszonen via en av dessa metoder .

  3. Använd MySQL CONVERT_TZ funktion för att konvertera den aktuella UTC-tiden till den specifika zonen. Till exempel, CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asien/Tokyo')

  4. Använd veckodag och tid på dagen för den konverterade dags att kontrollera dagen och intervallet i platsens post.

Observera också att andra kan föreslå att man bara lagrar UTC i databasen, eller att konvertera alla värden till UTC innan man jämför med "nu"-värdet. Båda dessa tillvägagångssätt kan misslyckas i edge-fall, eftersom UTC-veckodagen inte nödvändigtvis är samma veckodag som i varje tidszon.

En annan metod som kommer arbete, men kräver mer ansträngning, är att förutbestämma de specifika UTC-start- och stopptiderna för en viss tid i framtiden (åtminstone till nästa, men kanske längre). Sedan kan du skanna den här listan med UTC-tiden. Detta fungerar bättre i skala när du har tusentals eller fler enskilda poster att kontrollera. Men i mindre skalor är det vanligtvis inte värt omkostnader.

På samma sätt kan du ha en bakgrundsprocess som bara ställer in en "nu öppen"-flagga på varje post, men den måste hela tiden fungera mot din databas, och du kan aldrig leta efter andra tider än "nu".




  1. Förhindra tomma strängar i fältet CHARACTER VARYING

  2. INSERT .. SELECT med några standardvärden i MySQL med JOOQ

  3. Extraherar det totala antalet sekunder från en intervalldatatyp

  4. Hur man använder en eller flera OR och AND i mysql-fråga