Gå til indhold

Verificeret mod app@9d146f9, 16 skal genverificeres, 0 brudt

MySQL NOW() er ikke nødvendigvis UTC, men kolonnerne er

Fælde

faelde.platform.mysql-now-er-ikke-utc

Appen og kolonnerne er UTC, så en SQL der sammenligner med NOW() kan ramme to timer ved siden af.

Status: drift. Verificeret 2026-10-01 mod app@e99eb6a.

Felter

symptom
Et bilags eller jobs alder i en ad hoc-forespørgsel er to timer for høj, når den regnes med NOW().
aarsag
Appens tidszone er UTC, og kolonner skrives i UTC. NOW() følger databaseserverens tidszone, og forbindelsen sætter ingen. Er serveren på dansk tid, er NOW() 120 minutter foran om sommeren. Serverens egen tidszone er ikke læst her, så størrelsen af forskydningen er ikke verificeret.
saadan undgaas
Brug UTC_TIMESTAMP() eller send et tidspunkt med som parameter. Tjek SELECT @@global.time_zone, @@session.time_zone, før du tror på en alder.
relaterede

Prosa

Delvist verificeret: appens UTC og forbindelsen uden tidszone står i koden. Serverens tidszone og de 120 minutter er fra recon og er ikke målt.

Kilder

kode: app config/app.php · timezoneverificeret

Bruges af

Ingen andre entiteter peger herhen endnu.