Avatar billede lbaad Nybegynder
15. juli 2004 - 11:52 Der er 9 kommentarer og
1 løsning

Hvordan laver man tekst dato om til dato

Hejsa
Jeg har nu et problem med at trække en dato ud fra et cpr-nummer.
Jeg har fået det trimmet, så jeg kun har datoen f.eks. 121290 tilbage, men nu vil jeg gerne finde alle dem, som er 18 eller derover.
Lige nu er det en varchar datatype, men det skal vel være en date type istedet.
Er der nogen, der kan skrive sådan et statement, så man først konverterer tekst til dato, og så trækker denne dato fra sysdate??

Mvh
Lars
Avatar billede Slettet bruger
15. juli 2004 - 12:16 #1
Prøv: to_date(substr(cprnr,1,6),'DDMMYY'))
Avatar billede Slettet bruger
15. juli 2004 - 12:34 #2
Skal værer: to_date(substr(cprnr,1,6),'DDMMRR'))
Avatar billede lbaad Nybegynder
15. juli 2004 - 12:45 #3
mange tak. Det var lige det, som jeg skulle bruge
Avatar billede Slettet bruger
15. juli 2004 - 12:46 #4
Jeg vil gerne se hvordan du får udregenet om personen er 18 år eller der over ?
Avatar billede lbaad Nybegynder
15. juli 2004 - 13:19 #5
der regner jeg med, at jeg trækker den dato, som jeg har fået nu fra sysdate og dividerer med 365.
Avatar billede lbaad Nybegynder
15. juli 2004 - 13:20 #6
Der bare lige en mindre ting. Der kommer til at stå 2043, da årstallet er før 1950. Jeg har læst om dette, men kan ikke huske, hvordan det er man løser det. har du hørt om det
Avatar billede lbaad Nybegynder
15. juli 2004 - 13:23 #7
så trunc'ere jeg resultatet, da jeg kun skal bruge heltal
Avatar billede Slettet bruger
15. juli 2004 - 14:02 #8
En løsning kunne være:
decode(sign(sysdate-to_date(substr(cprnr,1,6),'DDMMRR')),-1,to_date(substr(cprnr,1,4)||'19'||substr(cprnr,5,2),'DDMMYYYY'),to_date(substr(cprnr,1,6),'DDMMRR'))

- dog vil du altid have problem med folk over 100 år!
Avatar billede lbaad Nybegynder
15. juli 2004 - 14:20 #9
nu er der ikke så mange personer, som er over 100 år, så det går nok :-)
Avatar billede Slettet bruger
15. juli 2004 - 14:22 #10
Hvis du bare spørger om trunc(sysdate/365) >= 18, vil du få et problem med personer som har fødselsdag i morgen.

En løsning kunne være:
trunc((sysdate-dato)/365)-
decode(sign(to_char(sysdate,'MM')-to_char(dato,'MM')),0,decode(sign(to_char(sysdate,'DD')-to_char(dato,'DD')),-1,1,0),0)

Hvor "dato" er dir cprnr. omregnet til en dato efter før nævnte princip.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester