Avatar billede Slettet bruger
28. marts 2002 - 20:14 Der er 22 kommentarer og
1 løsning

DELETE

Hej

Hvordan gøres følgende rigtigt :

DELETE FROM tbl_users WHERE godkendt="nej" AND Timenow > 48 timer gammel"

Timenow indeholder brugerens oprettelsestidspunkt i det format som Now() returnerer
Avatar billede sn0wflake Nybegynder
28. marts 2002 - 20:19 #1
DateDiff funktionen kan udregne differencen på mange typer tider (timer, minut, måned, år, etc.)

Syntaxen er:

DateDiff("d", dato1, dato2)

"d" står for day. Du kan også bruge "h" for hour.
Avatar billede hathor Nybegynder
28. marts 2002 - 20:20 #2
if (datediff(now, tbl_users, "h") >= 48) then delete from ...
Avatar billede Slettet bruger
28. marts 2002 - 20:21 #3
Hvordan strikker jeg det ind i min SQL streng?
Avatar billede sn0wflake Nybegynder
28. marts 2002 - 20:21 #4
For at få nuværende tidspunkt skriver du:

Now()
Avatar billede sn0wflake Nybegynder
28. marts 2002 - 20:22 #5
Udregn først dine variabler, og sæt dem derefter ind i din SQL-streng.
Avatar billede sn0wflake Nybegynder
28. marts 2002 - 20:23 #6
Sorry, lamt svar... :)
Avatar billede Slettet bruger
28. marts 2002 - 20:24 #7
hathor > Burde dette så ikke kunne gøre det?
if (datediff(now, tbl_users, "h") >= 48) then
SQL = True
else
SQL = False
End If
If SQL = True Then
strSQL = "DELETE FROM tbl_users WHERE godkendt="nej""
set rs = Conn.execute(strSQL)
End If
Kan bare ikke se hvornår den går ind og tjekker feltet Timenow?!
Avatar billede Slettet bruger
28. marts 2002 - 20:36 #8
Hmm
Avatar billede coltau Juniormester
28. marts 2002 - 21:02 #9
Slet alle der har har tilmeldt sig for mere end 48 timer siden og ikke har reageret på godkendelsesproceduren.

TimeOut = DateAdd("h", -48, Now) ' For 48 timer siden.
strSQL = "DELETE FROM tbl_users WHERE godkendt='nej' and TimeNow < #" & TimeOut & "#" ' # = Access

Altså så går jeg ud fra at du har et felt i recorden der hedder TimeNow og indeholder tidspunktet for hvornår vedkommende blev sat ind. ?
Avatar billede Slettet bruger
28. marts 2002 - 21:05 #10
coltau > Jeg har feltet Timenow i MySQL db, som indeholder brugerens oprettelsestidspunkt i det format som Now() returnerer og din beskrivelse af mit formål er korrekt.
Avatar billede coltau Juniormester
28. marts 2002 - 21:28 #11
jamen så skal den virke. Men min erfaring med ASP/dato/DB siger mig at der altid er problemer.
kan du ikke prøve at skrive dem ud først bare for at være sikker på at SQL-en får fat i de rigtige.
Avatar billede coltau Juniormester
28. marts 2002 - 21:29 #12
HOV. ! MySQL så skal der ikke # omkring datofeltet.

TimeOut = DateAdd("h", -48, Now) ' For 48 timer siden.
strSQL = "DELETE FROM tbl_users WHERE godkendt='nej' and TimeNow < '" & TimeOut & "'"
Avatar billede Slettet bruger
28. marts 2002 - 21:32 #13
TimeOut = DateAdd("h", -48, Now) ' For 48 timer siden.
strSQL = "DELETE FROM tbl_users WHERE godkendt='nej' and TimeNow < '" & TimeOut & "'"
lyder MEGET rigtigt, prøver lige lidt senere (hvad skulle man dog gøre uden Coltau??)
Avatar billede Slettet bruger
28. marts 2002 - 23:59 #14
coltau > Jeg har lige prøvet med TimeOut = DateAdd("h", -48, Now) ' For 48 timer siden.
strSQL = "SELECT navn FROM tbl_users WHERE godkendt='Nej' and timeNow < '" & TimeOut & "'"

Conn.Execute(strSQL)
Set rs = conn.Execute(strSQL)

Response.write "<p>" & rs("navn") & "</p>"

Det virker ikke - selvom jeg har ændret timenow til '27-03-2002 23:53:20' og godkendt til 'Nej'

Hvorfor?
Avatar billede coltau Juniormester
29. marts 2002 - 00:22 #15
Fordi den dato du ser når du udskriver denne linie:
Response.Write(Now)
ikke betyder at det er det samme som den du ser i databasen.

Du er nødt til at lave en lille testside med følgende SQL-sætning:
strSQL = "SELECT navn FROM tbl_users WHERE godkendt='Nej' and timeNow < 'dd-mm-yyyy'"
For at finde ud af hvilket datoformat MySql vil have i SQL-sætninger.

jeg er 95% sikker på at du får det rigtige udtræk hvis du anvender MM-DD-YYYY
Avatar billede coltau Juniormester
29. marts 2002 - 00:26 #16
Hvis du kan holde til at læse på dette tidspunkt så prøv at se disse:

http://www.eksperten.dk/spm/185128
http://www.eksperten.dk/spm/185772
Avatar billede Slettet bruger
29. marts 2002 - 00:29 #17
coltau > Jeg sidder med en MySQL admin og kan se indholdet af feltet timenow, og jeg VED at det indeholder indeholder strukturen 29-03-2002 00:28:49 altså Now() for det er den måde jeg sætter det ind på :o)
Avatar billede Slettet bruger
29. marts 2002 - 00:36 #18
Du mener at det ville være smartere at anvende et datoformat så "WHERE DATEDIFF(d, dato, GETDATE()) = 2" kunne bruges?
Avatar billede coltau Juniormester
29. marts 2002 - 00:42 #19
Det du ser i MySql-admin bestemmes af en eller anden opsætning i en CNF-fil eller kontrolpanelet - men det er ikke sikkert at det er det format som skal anvendes i SQL-sætninger via ADO.

Det er jeg til gengæld 100 på. Brug MM-DD-YYYY

Jeg har lige lavet denne i min danske Access/Dansk Win 98:
SELECT * FROM tabel WHERE date=#12-4-2001#;
og hvad får jeg: Alle med dato den 04-12-2001
Avatar billede coltau Juniormester
29. marts 2002 - 00:44 #20
Jeg har ikke erfaring med DateDiff i Sql - men den ser da rigtig ud. Jeg synes stadigvæk at du skal lave et lille eksempel så du er 100 på hvordan du skal trække datoer ud af DB-en.
Avatar billede Slettet bruger
29. marts 2002 - 00:44 #21
coltau > OK, men hvordan bruger jeg så MM-DD-YYYY? Altså når jeg indsætter data i "timenow" gør jeg det nu med Now() - hvad skal jeg bruge i stedet?
Avatar billede Slettet bruger
29. marts 2002 - 00:52 #22
I mit hovede må det da være mere præcist at arbejde med forskellen udregnet på timer, end på dato?
Avatar billede coltau Juniormester
29. marts 2002 - 12:19 #23
Du kan anvende denne funktion når du skal putte en dato ind i en SQL-sætning.

function FDateTime(Value) ' Format: MM-DD-YYYY HH:mm
  FDate = Month(Value) & "-" & Day(Value) & "-" & Year(Value) & " " & Hour(Value) & ":" & Minute(Value)
end function

SQL = "select * from tabel WHERE dato<'" & FDateTime(Date) & "'"

Hvis du altid bruger den og du senere skal ændre formatet evt. pga. ny database eller sandet - så er det jo kun funktionen der skal ændres og ikke hele koden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester