webForumDet fria alternativet

Datum

21 svar · 423 visningar · startad av SannyW

SannyWMedlem sedan jan. 2003447 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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
#6

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
#7

Vad innehåller asp-variabeln Datum då? Kan man få se lite mer kod i sammanhang?

SannyWMedlem sedan jan. 2003447 inlägg
#8

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
#9

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
#10

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
#11

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
#12

:)

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
#13

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
#14

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
#15

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
#16

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
#17

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
#18

:) Visst funkar ditt också, lite snyggar också kanske ;)

SannyWMedlem sedan jan. 2003447 inlägg
#19

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
#20

.. och du kan alltså använda datediff() på minuter också, för att hämta matcher inom vissa minutintervall.

Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb