cr
Nybegynder
30. maj 2006 - 09:54
Der er
13 kommentarer og 1 løsning
Dato filter på char felt?
Hej Jeg har en opgave hvor jeg skal arbejde på en database som lavet således at alle felter der definerede som char felter. Nogle af felterne er dato felter og jeg har brug for at lave en where bestilling på dem hvor de bliver behandlet som dato og ikke som char. Eksempel: SELECT * FROM Temp WHERE Start_Date > 01042006 Nogen ideer til hvordan jeg gør dette? Kan man typecaste? Bliver man nød til at flytte data over i virtual table med dato felter?
Annonceindlæg fra Infor
Prøv med SELECT * FROM Temp WHERE to_date(Start_Date,'DDMMYYYY') > to_date('01042006','DDMMYYYY');
cr
Nybegynder
30. maj 2006 - 10:19
#2
Ser ikke ud til at virke. Det retunere et tomt record set og jeg ved at der er felter med dato > end 01042006
hmm. Prøv lige at skrive: select min(to_date(start_date,'DDMMYYYY')), max(to_date(start_date,'DDMMYYYY')) from temp;
cr
Nybegynder
30. maj 2006 - 10:27
#4
Der er nogle af dato felterne som er blanke så den virker ikke medmindre man sætter et <> '' filter ind. Hvad skulle din forespørgsel retunrere? største og mindste dato?
cr
Nybegynder
30. maj 2006 - 10:31
#5
Har lige lavet et par checks. Alle felter er fyldt, men der er åbentbart en eller flere som er ulovligt fyldt med ikke numerisk værdi. Skal se om jeg kan digte noget der sortere disse fra, er lidt svært at finde dem manuelt fordi der er 190.000 records.
Nemlig, det var såmænd bare for at vi kunne sikre os, at dit datoformat er som vi antager... Prøv så med: select min(to_date(start_date,'DDMMYYYY')), max(to_date(start_date,'DDMMYYYY')) from temp where start_date is not null;
et primitivt check kunne være: select start_date from temp where translate (start_date,'0123456789','9999999999') <> '9999999999';
cr
Nybegynder
30. maj 2006 - 10:49
#8
Prøver jeg lige, so fare tak for de gode og hurtige input! Du har ihvertfald sikret dig points ;)
cr
Nybegynder
30. maj 2006 - 10:53
#9
datoerne i text feltet står som : 01.04.2006 kan det være . som forstyrre to_date funktionen?
Ja, mon ikke ! :-) Så hedder det: SELECT * FROM Temp WHERE to_date(Start_Date,'DD.MM.YYYY') > to_date('01042006','DDMMYYYY');
cr
Nybegynder
30. maj 2006 - 11:11
#11
Det virker! Du er min bedste ven lige nu ;) Skriv lige et svar så jeg kan give dig points!
cr
Nybegynder
30. maj 2006 - 11:14
#12
hehe du havde lavet svar :) så her fik du points! Endnu engang mange tak for hjælpen.
Nu kan man jo ikke købe sine venner ....:-)
cr
Nybegynder
30. maj 2006 - 11:17
#14
Hehe rigtigt. Så må du nøjes med at være Kongen.
Computerworld tilbyder specialiserede kurser i database-management