Jag har en tabell med bl.a dessa tre kolumner
id in ut
1 in 2009-03-05 ut 2009-07-13
2 in 2009-04-17 ut 0000-00-00
3 in 2009-07-20 ut 2009-10-01
4 in 2009-09-30 ut 0000-00-00
där 0000-00-00 betyder finns kvar
Om jag nu vill veta vilka som var inne 2009-09-01, hur gör jag då?
Jag lyckas bara få ut antingen id2 eller id3.
Hmm, man kanske skulle kunna göra såhär - beroende på vilken DB du kör, detta blir för mySQL
select id from tabellen where in < '2009-09-01' and replace(ut, '0000-00-00', curdate()) > '2009-09-01'
Har inte testat själv, det beror nog lite på vad du har för data-typ på in och ut, men det borde gå att lösa så här om du lagrar det som string. Kanske måste du casta om curdate() till string också
Du kanske ska fundera på om du vill ha strikt olikhet i < eller >, eller om du kan tänka dig <= och >=, säg att en sak kom in idag och du råkar vilja kolla det samma dag, då bör du få okej från både in och ut, så att säga, vilket kräver <= och >=
Ja, <= och >= hade jag med från början i mina försök, men vad som aldrig slog mig var att jag skulle kunna använda replace för att ändra 0-datumet till "idag"...
Blev en massa konstiga försök med and och or... som förstås bara blev helfel.
Din kod blev dagens stora aha-upplevelse... Tack igen!
256 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a