Jag gör ett artikelscript där man ska kunna välja att en artikel kan vara aktiv mellan två datum, date_start och date_stop. Men vart ska man lägga en funktion som kollar om artiklar är aktiva eller inte, och aktiverar/avaktiverar vid behov. Och hur kan en sådan funktion se ut?
Helt klart. Däremot kanske AND är att föredra framför &&.
Sedan kan man fundera på om samtliga artiklar skall omfattas av en tidsram. Vissa kanske alltid är giltiga, vissa kanske har startdatum men inte slutdatum o.s.v. Skulle så vara fallet kan NULL sparas som värde för datumkolumnerna och SQL-frågan får modiferas en aning.
select *
from articles a
where (a.date_start is null and a.date_stop is null) -- ingen tidsram
or (a.date_start is null and $date <= a.date_stop) -- giltig t.o.m. ett visst datum
or ($date >= a.date_start and a.date_stop is null) -- giltig fr.o.m. ett visst datum
or ($date >= a.date_start and $date <= a.date_stop) -- giltig inom en viss tidsram