Sletning af records

Tags:    c#

<< < 12 > >>
Selvom jeg er helt ny i C#, har jeg påtaget mig en lille opgave :-)

Jeg har en MS SQL database, hvor dem der har designet den, har lavet en date/time stamp felt, defineret so nvarchar(50) :S

Alle records har så denne date/time stamp, f.eks. 12/14/2005 10:11:59 AM.

Opgaven går ud på at slette alle records, ældre end en valgt dato. Jeg søger absolut ikke en færdig løsning, men bare den rigtige indgangsvinkel.

Skulle jeg lave det i et af de sprog jeg allerede kender, ville jeg:

Læse alle records i en tabel, én af gangen.

For hver record, vil jeg pille datoen ud af recordens nvarchar og bytte rundt, så der står 20051214 i et numerisk felt, i stedet for 12/14/2005.

Hvis recordens numeriske dato så er <= indtastningsdatoen vil jeg slette recorden.

Kan det laves mere optimalt? Der er et par millioner records i nogle af tabellerne og jeg forudser et performance issue, hvis jeg laver det på den måde jeg har skitseret.

Det er ikke et program der skal køres ret tit.



Indlæg senest redigeret d. 14.09.2009 10:32 af Bruger #9814
Måske jeg ikke har forstået dit spørgsmål korrekt men kan det ikke laves med en ret simpel sql-sætning?



Måske jeg ikke har forstået dit spørgsmål korrekt men kan det ikke laves med en ret simpel sql-sætning?


Jeg kan bare ikke tænke mig til hvordan man skal teste på datoen, når den står som mm/dd/åååå i en string i recorden. Så jeg gætter på at man ikke kan i en SQL



Mmh, du kan ikke convert den til et datetime?



Mmh, du kan ikke convert den til et datetime?


Det er jeg desværre ikke stærk nok i SQL, til at vurdere om jeg kan gøre i ét statement.

Men du har ret i, at jeg kan gøre det i C# hvilket er nemmere end det jeg har skitseret.



Brian , jeg er heller ikke selv helt sikker på du kan gøre det i SQL. Men tænkte bare der var en mulighed i C#



Fold kodeboks ind/udSQL kode 




Jakob det der ikke noget problem i hvis datoen var gemt som datetime. Men problemet er jo at den ligger som string/varchar



Kig på disse sider:
http://www.w3schools.com/SQl/sql_delete.asp
http://www.w3schools.com/SQl/sql_where.asp

Og kig derefter på funktionerne i 'Date' klassen, der skulle gerne være en 'Parse'-funktion.

MVH Jeppe.



Her er et lille forsøg, jeg lavede i VB.NET, det skulle ikke være så svært at konvertere til C#:
Fold kodeboks ind/udKode 


Hvor denne:
Fold kodeboks ind/udKode 

Giver 12142005101159 altså formatet MMDDÅÅTTMMSS.

Det er det her stykke kode der er vigtigst:
Fold kodeboks ind/udKode 




Fold kodeboks ind/udSQL kode 




<< < 12 > >>
t