webForumDet fria alternativet

Snurrig med < och <= vilket som är rätt?

Databaser & SQL

3 svar · 857 visningar · startad av xtreme

Medlem sedan juli 20002 056 inlägg
Frågan#1

Har ett enkelt problem men snurrar bara till det av någon anledning, får inte till det om det ska vara <= eller bara <

Regler

  • Värdet lades till 1 september, skapelsedatumet var den 1 september.
  • Den 21 september, 20 dagar efter värdet skapades, tar denna regel effekt och tar bort värdet automatiskt.
WHERE r.created_timestamp < (NOW() - INTERVAL 20 DAY)

eller

WHERE r.created_timestamp <= (NOW() - INTERVAL 20 DAY)

Vad är det rätta om jag vill radera värdet 20 dagar efter värdets skapelsedatum?

Medlem sedan juni 2012581 inlägg
#2

Räknade lite på det. 1 september - 20 dagar = 12 augusti. Vill du den 1 september ta bort det som skapats den 12 augusti (eller tidigare) så ska du använda <=, vill du ta bort det som skapats den 11 augusti (eller tidigare) så ska du använda <.

Utöver det bör du ha i åtanke att även klockslag beaktas med den frågan du kör nu. Vill du bara köra på datum får du använda DATE(r.created_timestamp) och DATE(NOW() - INTERVAL 20 DAY).

(Det sista har jag inte testat, men det bör vara så)

Medlem sedan juli 20002 056 inlägg
#3

prplxr skrev:

Räknade lite på det. 1 september - 20 dagar = 12 augusti. Vill du den 1 september ta bort det som skapats den 12 augusti (eller tidigare) så ska du använda <=, vill du ta bort det som skapats den 11 augusti (eller tidigare) så ska du använda <.

Utöver det bör du ha i åtanke att även klockslag beaktas med den frågan du kör nu. Vill du bara köra på datum får du använda DATE(r.created_timestamp) och DATE(NOW() - INTERVAL 20 DAY).

(Det sista har jag inte testat, men det bör vara så)

Även om du nog svarade på min fråga tror jag du missförstod mig. Den 21 september vill jag radera det som skapdes 1 september.

Medlem sedan juni 2012581 inlägg
#4

Ursäkta, det blev lite rörigt, men matematiken är densamma. Vill du den 21 september radera den som skapats 1 september ska du använda <=, eftersom 21-20=1 (dvs, datumen blir samma).

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)