Avatar billede mio Nybegynder
25. januar 2000 - 12:52 Der er 9 kommentarer og
1 løsning

Dato-konvertering

Projekt :
Jeg har en support-database hvor jeg fra et felt (planlagt_udfoert varchar) gerne vil checke om dette felt er lig med datoen i morgen..getdate() + 1.

I feltet planlagt_udfoert er der eksempelvis følgende data : 27-01-2000 eller 27-01-00.

Kan man checke det ?
Avatar billede blackthorne Nybegynder
25. januar 2000 - 13:09 #1
Yep på denne måde
parameteren 105 angiver datoformat  dd-mm-yyyy
se evt online hjælp omkring dateadd og convert

IF '1-1-2000' = Convert(Varchar(10), DateAdd(day, 1, GetDate()), 105)
    Print 'True'
ELSE
    Print 'False'
Avatar billede mio Nybegynder
25. januar 2000 - 13:24 #2
blackthorne > Det er ok...jeg er lige ved at give dig pointene.... Meeen...Når jeg f.eks. laver følgende sætning :
IF (select planlagt_udfoert * from usercalls) = Convert(varchar(10), Dateadd(day, 1, getdate()), 105)
Print 'True'
Else
Print 'False'

kommer den og siger at :

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Hvorfor det ??
Avatar billede blackthorne Nybegynder
25. januar 2000 - 13:35 #3
fordi din (select planlagt_udfoert * from usercalls) returner mere en række. Skal du teste alle rækkerne op imod imorgens dato???
Avatar billede sjensen Nybegynder
25. januar 2000 - 13:35 #4
Fordi din select returnerer mere end 1 record, og det kan du ikke teste med =

sjensen
Avatar billede mio Nybegynder
25. januar 2000 - 13:37 #5
Blackthorne >> Jeg skal teste op mod 3000 rækker..... :-)
Avatar billede blackthorne Nybegynder
25. januar 2000 - 13:45 #6
skal du have rækker tilbage fra selecten eller vide om der findes række der ikke matcher imorgens dato. giv mig en nærmere beskrivelse
Avatar billede mio Nybegynder
25. januar 2000 - 13:53 #7
Nå nu fik du pointene alligevel..... :-)

Jeg skal :

Når jeg laver selecten, skal den udtrække de rækker hvor feltet er lig med datoen i morgen... Jeg har feks følgende rækker :

ID  Planlagt    Ansvar
1  25-01-00    MO
2  26-01-00    MO
3  27-01-00    PS
4  28-01-00    KO

Her skal den så kun vise rækken med ID = 2
Avatar billede mio Nybegynder
25. januar 2000 - 13:54 #8
Den skal vise rækken !!!
Avatar billede blackthorne Nybegynder
25. januar 2000 - 13:56 #9
select * from usercalls where planlagt_udfoert = Convert(varchar(10), Dateadd(day, 1, getdate()), 105)
Avatar billede blackthorne Nybegynder
25. januar 2000 - 13:58 #10
eller denne som gælder for både dd-mm-yyyy og dd-mm-yy
select * from usercalls where Convert(DateTime, planlagt_udfoert, 105) = Dateadd(day, 1, getdate())

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