Verwijder record als datum verstreken is
Ik zou graag wat wijzer willen worden over het volgende.
In mijn tabel heb ik een kolom met datums en wil graag dat deze automatisch doet opschonen.
Heb ik hier een cronjob voor nodig of kan ik dit ook anders triggeren?
Stel je heb 05-12-2020 (pakjesavond) dan moet deze record 06-12-2020 automatisch worden verwijderd.
DATEDIFF retourneert het aantal dagen verschil tussen de beide datums (now() = vandaag). Als beide data dus gelijk zijn dan komt hier 0 uit, en dat is "false" ("niet waar") in computerland. Alle andere waarden (1,2,3,-20) zijn niet 0, dus niet false, en dus wel "waar". En die records worden in dit geval gewist.
Zelf houd ik er altijd van om het iets explicieter te doen, dus gewoon:(alles eerder dan de huidige datum wissen).
Of als je nog een paar dagen extra respijt wilt:
En ja, ik zou dit met een cronjob doen. D'r zijn legio andere mogelijkheden*, maar die zijn allemaal complexer en minder "betrouwbaar" dan een recht-toe-recht-aan cronjob.
* Bijvoorbeeld in je script checken of je de data voor vandaag al gewist hebt, en zo nee dat dan nog even te doen. Nadelen: 1) de eerste bezoeker van de dag moet extra lang wachten 2) geen bezoekers = geen data gewist.
Gewijzigd op 18/03/2020 08:48:35 door Rob Doemaarwat
waarom moet dat opgeschoond worden?
Dat je ze niet meer wilt tonen nadien, is een andere vraag namelijk. Ik snap heel goed dat je ze niet meer wilt tonen.
Maar dat kun je met een simpele WHERE realiseren.
En weg=weg.
Ik kreeg deze week nog de vraag of we het overzicht van de weekenddiensten van 2019 nog terug konden halen.
Nee dus. Nu was dat gewoon een geuploade file, maar het idee is gelijk: het neemt minimale ruimte in, en misschien wil je komend jaar toch nog weten of Halloween nu wel of niet op de kalender kwam vorig jaar.
Tenzij het om echt een shitload aan data gaat met honderden gebeurtenissen per dag, zou ik ze laten staan.
Het fijne van DATE en DATETIME is dat het een tekstuele sortering volgt, waardoor je dus ook dingen op eenzelfde wijze kunt ordenen en sorteren.
Stel dat je 4 maart hebt, en 1 april, dan geldt, als je dit tekstueel vergelijkt:
2020-03-04 < vandaag (2020-03-18) < 2020-04-01
Dit stemt overeen met de natuurlijke verloop van dagen en tijd.
Had je dit opgeslagen als dd-mm-yyyy dan is het volgende aan de hand:
01-04-2020 < 04-03-2020 < vandaag (18-03-2020)
Als je met dit formaat vergelijkingen "in de tijd" doet dan krijg je zelden tot nooit het interval van records waar je naar op zoek bent.