1. Du bibeholder CPR som nvarchar (jeg går ud fra, at det er feltet CPR, der er problemet). Så skal du lave følgende konvertering af CPR hver gang, du skal sammenligne den med en dato:
convert(smalldatetime, cpr, 103)
2. Du tilføjer et dummyfelt af typen nvarchar, sætter indholdet lig CPR, dropper feltet CPR, adder feltet CPR med datatypen smalldatetime, sætter det nye CPR = convert(smalldatetime, dummycpr, 103) og dropper endelig dummyfeltet.
Herefter kan du bruge cpr direkte som ovenfor.
Når du sammenligner med et datofelt i forhold til f.eks. dateadd, så brug følgende format:
cast(convert(nvarchar(8), dateadd(yy, -20, getdate()), 112) as smalldatetime)
Derved får du datoen konverteret til ISO format (yyyymmdd) uden tidspunkt. Fordelen ved ISO formatet er, at det genkendes altid af SQL Server uden hensyn til serverens datoformat.
<Snip> alter table [Tabel] add column DummyCPR nvarchar(10)
go
update [Tabel] set DummyCPR = CPR
go
alter table [Tabel] drop column CPR
go
alter table [Tabel] add column CPR smalldatetime
go
update [Tabel] set cpr = convert(smalldatetime, DummyCPR, 103)
go
alter table [Tabel] drop column DummyCPR </Snip>
Ovenstående script konverterer CPR fra nvarchar til smalldatetime. Det er skrevet efter hukommelsen.
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.