15. marts 2001 - 12:40Der er
12 kommentarer og 2 løsninger
Slette 7 dage gamle records
Jeg er ved at lave en hjemmeside der benytter sig af SQL. Jeg har her brug for at kunne slette alle records der er mere end 7 dage gamle i et table. Jeg har lavet det med nogle loop\'er, men det er ikke hensigtsmæssig. Så er det muligt at lave én SQL setning der gør dette, noget som: \"SELECT * FROM count WHERE DateDiff(\"d\",start,end) > 7\"? (Jeg ved godt at der ikke er noget der hedder dette, med det er blot for at præcisere hvad det er jeg taler om...
Din ide med Datediff er glimrende (og den findes altså i T-SQL !) - så hvis vi antager, at du har et et felt med oprettelsesdato i tabellen, så skulle noget i denne stil gøre det:
delete TABLE where datediff(\"d\", datefield, getdate() > 7)
Hvis du ikke har en oprettelsesdato i tabellen, bliver det straks mere vanskeligt!
Jeg har ikke et oprettelsesdato felt, som jeg regner med at er noget man kan sætte sin database til automatisk at skrive på records lige så snart de bliver oprettet. Men jeg har et felt med en dato (som jeg selv skriver til databasen), men formatet 01-01-01 12:12:12 (standard format). Kan jeg bruge dette felt til at slette efter?
(hvis det er et svar, så husk at vælge \"Svar\" og ikke \"Komentar\", men tak torbenkoch...)
jeps... du skulle kunne bruge dit eget datefelt til at slette efter! Hvis du automatisk vil have sql-serveren til at sætte en oprettelsesdato kan du i feltet for en dato i default value angive getdate()
så det er bare at smide dit sql ind i en stored procedure og opette et job for din stored procedure og sæt jobbet til at eksekvere alt efter behov :-(=)
Stoff, du kan godt bruge dit eget datofelt - jeg antager her at dit datofelt er af typen char eller varchar. I så fald skal du gøre sådan (og bemærk, at jeg samtidigt retter en fejl i min oprindelige kommentar, hvor jeg havde d i \"\" - det skal man nemlig ikke - endvidere var der vist en parentesfejl - det var vist for tidligt på dagen *S*):
delete TABLE where datediff(d, CONVERT(datetime, DATOFELT), getdate()) > 7
Slå evt. CONVERT funktionen op i Online Books - den er ganske anvendelig til mange ting!
Kan man af den lange tid hermed udlede, at Stoff hører til blandt nasserne - og derfor ikke bør befinde sig her på Eksperten? Det vil jeg mene - sørgeligt...
Det vil jeg gerne kommentere på... For det er ikke helt kortkt... Jeg har prøvet de forskellige svar (dog ikke dem alle sammen endnu, da jeg ikke sidder \"hocked up\" 24 timer i døgnet, men snart). Men dem jeg har prøvet virkede IKKE, \"CONVERT\" commandoen virkede ikke, jeg har prøvet at gøre de forskelige, men jeg er kun en NYBEGYNDER inde for SQL, så om jeg må be....... Spørgsmålet bliver snart lukket, men jeg har ikke fundet et svar jeg kunne bruge, og det er fordi at jeg gør noget forkert, fordi at den SQL server jeg bruger ikke er kompatibel med de kommandoer I kommer med, eller de svar jeg får ikke er så udførlige som de måske kunne være... Jeg tilbringer MAX 2 til 3 gange på nette om UGEN, så hvis jeg må be om lidt tolmodighed... Jeg har også andre ting at give mig til... (P.S. jeg ved godt at jeg ikke staver så got!)... Men tak for svarene, jeg kigger på dem så hurtig som muligt...
Vi har jo stillet nogle uddybende spørgsmål - for bedre at kunne hjælpe dig - dem har du ikke gidet svare på. Du har heller ikke gidet fortælle os, at du ikke har kunnet få det til at virke.
Da vi stadig ikke ved, hvordan dit datofelt er opbygget (datetime, char, varchar eller hvad) er det jo lidt svært. Mit eksempel virker fint i den beskrevne situation, men den svarer jo så åbenbart ikke til din.
Så hvis du fortæller os, hvad der går galt hos dig (fejlmeddelelser osv.), version af sql serveren osv. så kan det jo være, at vi kan hjælpe dig!
for at være krakilsk - hvorfor er det ikke optimalt at loope? Jeg da en mailtabel.... og når folk synes der skal sendes en mail, så generes der ca. 500 mails og de er i udbakken i outlook på under 5 minutter :O) Og jeg looper mig igennem min adressetabel og mailteksttabel!
Jeg har lånt en bog på bibbet, der vil jeg kigge i for at få de ting beskrevet som er kommet her... mange tak, for svarene, det har været langt nemmer at finde det jeg havde brug for, og har jeg har på baggrund af svarene fået noget til at vike (dog ikke optimalt)...
Synes godt om
Ny brugerNybegynder
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.