jag har poster med två datum fält.
start_date och end_date
jag vill lista posterna mellan de två datumen, hur ser sql:en ut?
/t
Databaser & SQLur Databashanterare & SQL
9 svar · 251 visningar · startad av tlee
jag har poster med två datum fält.
start_date och end_date
jag vill lista posterna mellan de två datumen, hur ser sql:en ut?
/t
Sök på BETWEEN
select * from t where now() between start_date and end_date
får det inte att funka :l
jag har en tabell som ser ut såhär.
id
txtMsg
start_date
end_date
start och slutdatum skickar jag via ett forumlär till sidan. och alla poster som finns mellan dom datumen skall visas.
Är ni med?
/t
SELECT * FROM t WHERE start_date < #" & startdatum & "# AND end_date > #" & slutdatum & "#;"
Jag tycker du har en aningen konstig tabellstruktur, men jag vet iofs inte hur du använder dig av den / vad tabellen är till för.
engine^: det funkar med din kod om man vänder <> teckenen, tack för det.
SELECT * FROM Event WHERE (Event_st_dat >= #2003-02-01#) AND (Event_sl_dat <= #2003-02-31#);
Ovan kod brister ju på att det inte finns 31 dagar i februari och att det ibland kan vara skottår.
Går det att komma runt detta på något sätt eller måste jag alltid skicka med korrekta datum? Jag vill alltså att även om det inte finns 31 dagar i februari så skall den jämföra med det ändå och visa ifall det finns sådana poster i databasen.
Är det möjligt?
/t
Du kan använda dig av DateAdd().
SELECT * FROM Event WHERE (Event_st_dat >= #2003-02-01#) AND (Event_sl_dat <= DateAdd("d", -1, DateAdd("m", 1, Now())));
Nu vet jag inte hur du får fram dina datum, men du förstår vad jag menar, hoppas jag ;)
ny fråga igen
tackar igen Engine^
med risk för att bli tjatig så är det en grej till jag har problem med.
Vi har en post med startdatum 10 januari och slutdatum 30 januari.
Jag väljer via en droplista att visa alla poster mellan 15 januari och 25:e januari.
Den första posten håller ju på mellan dom två datumen jag valde i droplistan och skall
visas tillsammans med övriga poster som börjar mellan 15 januari och slutar 25 januari.
lite kod
SELECT * FROM Event WHERE (Event_st_dat >= #2003-01-15#) AND (Event_sl_dat <= #2003-01-25#)
Ovan plockar ut alla poster mellan 15 och 25 januari, dock inte de som börjat tidigare eller slutar senare.
Jag har labbat lite utan framgång men denna kod kanske hjälper till att förstå hur jag menar.
SELECT * FROM Event WHERE (Event_st_dat >= #2003-01-15#) AND (Event_sl_dat <= #2003-01-25#)
OR (Event_st_dat BETWEEN #2003-01-15# AND #2003-01-25#)
OR (Event_sl_dat BETWEEN #2003-01-15# AND #2003-01-25#)
Event_st_dat <-- namn på fält med startdatum
Event_sl_dat <-- namn på fält med slutdatum
Någon som löser denna tro?
/t
SELECT * FROM Event WHERE (Event_st_dat >= #2003-01-15#) AND [b]([/b](Event_sl_dat <= #2003-01-25#)
OR (Event_st_dat BETWEEN #2003-01-15# AND #2003-01-25#)
OR (Event_sl_dat BETWEEN #2003-01-15# AND #2003-01-25#)[b])[/b]
Tro om jag förstog vad du menade nu...
select * from event
where not (#2003-01-25# < Event_st_date
and #2003-01-15# > Event_sl_date)