SannyWMedlem sedan jan. 2003447 inlägg
Hej!
Jag använder nedanstående för att visa föregående och nästa match.
Förra
WHERE ((Datum=Date() AND TID < Time ()) or DATUM< Date()) ORDER BY DATUM DESC, TID"
Nästa
WHERE ( (DATUM= Date() AND TID> Time() ) OR DATUM> Date() ) ORDER BY DATUM, TID"
Försöker utveckla det hela och vill göra om det till
.Förra
.Pågående (gäller i 120 minuter)
.Nästa
Om jag skriver ut Datum så blir det ex. 2004-10-17
Tid ex. 14:00:00 Alltså datum och tid ligger i vars en kolumn.
Först och främst, har letat men hittar det inte. Hur lägger jag på +120 minuter på 14:00:00. När jag försöker lägg +2 h så ändra åren bara.
Databas ser ut:
Datum Tid Händelse
2004-11-01 16:00:00 Händelse
2004-11-02 12:00:00 Händelse (aktiv under 120 min)
2004-11-02 18:00:00 Händelse
Hoppas på lite hjälp i rätt riktning.
LarsGMedlem sedan dec. 200012 465 inlägg
Det beror på DBMS
I access t.ex finns funktionen dateadd för att lägga till interval till en tid.
SannyWMedlem sedan jan. 2003447 inlägg
Ok. Har access, har kollat lite på dateAdd. Att lägga på 2 h på Date () är väl:
dateAdd("h", 2, time)
Men hur blir det när man vill göra det på RecSet("Tid") ?
/r
strTid = RShnext("tid")
new2Tid = dateAdd("h", 2, strTid)
Om jag ser rätt så gör man enligt ovan :)
/r2
minuter funkar lika bra:
strTid = RShnext("tid")
new2Tid = dateAdd("n", 150, strTid)
SannyWMedlem sedan jan. 2003447 inlägg
Så där ja, om jag har tänkt rätt så borde det bli så här:
Förra
WHERE ((Datum=Date() AND DateAdd('n',150,TID) < Time ()) or DATUM< Date()) ORDER BY DATUM DESC, TID"
Pågående
((Datum=Date() AND Datediff('n',(dateAdd('n', 150, TID)),TID) < Time ()) or DATUM< Date())
Nästa
WHERE ( (DATUM= Date() AND DateAdd('n',150,TID) > Time() ) OR DATUM> Date() ) ORDER BY DATUM, TID"
Om LarsG eller någon annan ser något fel så skrik gärna till.
/r har testat en massa nu och det blir ju helt uppåt väggarna. Märker tydligt att mina önskedrömmar är större än min kunskaper.
Får kolla på detta imorgon, hjälp önskas om någon känner sig manade.
@ndersMedlem sedan juni 200026 914 inlägg
Felet är att du lagrar datum och tid i separata fält. Lägg ihop både datum och tid till ett fält, så kommer DateAdd() att returnera det du vill.
SannyWMedlem sedan jan. 2003447 inlägg
Jag gjorde som du sa @nders, men nu öppnade en helt ny värld av problem.
Om jag har Datum = 2004-01-01 14:00:00
Försöker sedan använda det mot Datum = Date() så hade jag tänkt mig att det skulle funka. Men det gör det såklart inte...frågan är om jag måste använda DatePart för h, min, sek?
Letar av bara livet i forumet, men just nu måste jag vara riktigt dålig på det. Hittar inte riktigt vad jag behöver...
/r
Har nu knåpat och testat lite till, men får inte helt till det. Fel är det men min "tanke" gångar är enligt nedan:
Datum = (#"&(DatePart("yyyy", Datum)&"-"&DatePart("m", Datum)&"-"&DatePart("d", Datum))&"#)
som ger helt fel svar:
1899-12-30 (slipper tiden i allafall :) )
@ndersMedlem sedan juni 200026 914 inlägg
Vad innehåller asp-variabeln Datum då? Kan man få se lite mer kod i sammanhang?
SannyWMedlem sedan jan. 2003447 inlägg
Jag såg det @nders att jag gjort en miss, men jag får fortfarande samma fel:
Problemet uppstår när jag försöker bädda in det i SQL.
strDate = Date()
SQL = "SELECT TOP 1 * FROM tbl_matcher WHERE Datum=#"&(DatePart("yyyy", strDate)&"-"&DatePart("m", strDate)&"-"&DatePart("d", strDate))&"# ORDER BY DATUM"
/r usch, det börjar bli mkt nu.
Det måste väl ändå bli
WHERE Date()=(#DatePart('yyyy', Datum)'-'DatePart('m', Datum)'-'DatePart('d', Datum)#)
Dagens datum skall ju vara = databasen och DatePart (yyyy:mm:dd)
Men har fortfarande problem med SQL-satsen.
@ndersMedlem sedan juni 200026 914 inlägg
Men alltså. Det är väl datumet som ligger i databasen som du i jämförelsen vill "ta bort" tiden ifrån? Enklast är nog dock om du använder DateDiff() i SQL-frågan istället för DatePart().
Mvh
SannyWMedlem sedan jan. 2003447 inlägg
Det stämmer, men när jag använder DateDiff() är det inte tiden mellan Date1 och Date2 ?
Du menar att jag skall använda:
WHERE Datediff('n',Date(), Datum)
men det ger mig samma fel.
@ndersMedlem sedan juni 200026 914 inlägg
Nu börjar jag klia mig i skallen.
Vi tar det från början :)
Exakt vad är det du vill få ut, dvs vilka villkor vill du ställa?
SannyWMedlem sedan jan. 2003447 inlägg
:)
Ok.
I databasen har jag datum, som innehåller 2004-10-17 12:00:00
Jag vill skriva ut top 1 där Datum= Date() , men problemet som jag ser är att det blir
2004-10-17 12:00:00 = 2004-10-17
Därför ville jag göra om Datum med hjälp av DatePart().
@ndersMedlem sedan juni 200026 914 inlägg
Och jag tycker du ska använda DateDiff istället. :)
... WHERE DateDiff('d', Date, Datum) = 0
Fungerar inte det?
SannyWMedlem sedan jan. 2003447 inlägg
Nej tyvärr fungerade inte ovanstående:
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/tid.asp, line 22
Men jag fick faktiskt DatePart till att fungera precis:
WHERE Date()=(DatePart('yyyy', Datum)&""-""&DatePart('m', Datum)&""-""&DatePart('d', Datum))
@ndersMedlem sedan juni 200026 914 inlägg
Det där ser alldeles för kladdigt ut för att jag ska tycka om det. ;)
Prova detta istället:
WHERE DateDiff('d', now(), Datum) = 0
mvh
SannyWMedlem sedan jan. 2003447 inlägg
Använder sedan för att göra den önskade delen synlig från 12:00:00 fram tills 14:30:00
<%
strDatum = RShnext("datum")
IF dateAdd("n", 150, strDatum) > now() THEN%>
Detta är då pågående.....nu skall jag bara fixa till förre och efter också :)
@ndersMedlem sedan juni 200026 914 inlägg
Uh? Varför inte använda DateDiff direkt i SQL-frågan?
Jag tycker inte om när man löser problem på fel sätt. ;)
SannyWMedlem sedan jan. 2003447 inlägg
:) Visst funkar ditt också, lite snyggar också kanske ;)
SannyWMedlem sedan jan. 2003447 inlägg
Tack så jätte mycket för din hjälp, om du känner att du orkar så får du gärna förklara vad det är som är :
löser problem på fel sätt.
@ndersMedlem sedan juni 200026 914 inlägg
.. och du kan alltså använda datediff() på minuter också, för att hämta matcher inom vissa minutintervall.