webForumDet fria alternativet

sql-fråga

Databaser & SQL

13 svar · 498 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Jag tänkte skriva följande sats men jag vet inte hur man skriver för att ta bort inlägg som är ex 20 minuter gamla

DELETE FROM tblUsers_messagescroll WHERE messageTime (är mer än 20 minuter från den aktuella tiden)

Så från att nån skriver ett meddelande så ska det tas bort efter 20 minuter

Medlem sedan juni 2004533 inlägg
#2

Använd DateAdd för att dra av 20 minuter från aktuellt tid, och jämför med det.

Medlem sedan feb. 20032 027 inlägg
#3

e inte så bra på DateAdd :-)

Medlem sedan juli 200543 inlägg
#4

Inte dateadd utan datediff..
DELETE FROM tblUsers_messagescroll WHERE DateDiff("n",messageTime,now()) => 20
Tror jag ..

Medlem sedan juni 2004533 inlägg
#5

Jo, DateAdd.

delete from tblUsers_messagescroll where messageTime < DateAdd("n", -20, Now())

Visserligen kan man få det att fungera med DateDiff också, men jag föredrar DateAdd. Dels är den mer exakt, eftersom DateDiff bara räknar skillnaden i hela minuter, medan metoden med DateAdd blir exakt på sekunden. Dels är det enklare att se vad den gör, ifall man sätter datumen fel i DateDiff så får man ett negativt värde istället. Dessutom så blir frågan snabbare när datumfältet inte ingår i funktionsanropet.

Medlem sedan juli 200543 inlägg
#6

Okej tänkte inte att man kunde göra så..
Men visst de funkar ju..

Medlem sedan dec. 200012 464 inlägg
#7

Flyttas från ASP

Medlem sedan feb. 20032 027 inlägg
#8

jag får

Microsoft VBScript compilation error '800a03ee'

Expected ')'

/smsmessage.asp, line 7

objConn.Execute("delete from tblUsers_messagescroll where messageTime < DateAdd("n", -2, Now())")
---------------------------------------------------------------------------------^

Medlem sedan mars 20023 561 inlägg
#9
objConn.Execute("delete from tblUsers_messagescroll where messageTime < DateAdd(""n"", -2, Now())")
Medlem sedan feb. 20032 027 inlägg
#10

Josef skrev:

objConn.Execute("delete from tblUsers_messagescroll where messageTime < DateAdd(""n"", -2, Now())")

tack, nu ska jag se om koden körs

Medlem sedan feb. 20032 027 inlägg
#11

satte tiden till 2 minuter, efter 3-4 minuter så var posten fortfarande kvar

Medlem sedan juni 200032 967 inlägg
#12
  1. Du borde ha apostrofer runt n i dateadd-delen.
  2. Är du säker på att du kört SQL-frågan efter det att de 2 minutrarna passerat då?

Kör gärna en select-fråga med samma villkor som din delete, så får du se om datat verkar vara riktigt.

Medlem sedan feb. 20032 027 inlägg
#13

hur ska jag se om den körs med Set delete1=objConn.Execute("SELECT * FROM tblUsers_messagescroll where messageTime < DateAdd(""n"", 2, Now())")

Medlem sedan juni 200032 967 inlägg
#14

Du vet väl om du har exekverat DELETE-frågan?

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)