Avatar billede kak Nybegynder
28. december 2007 - 17:56 Der er 6 kommentarer og
1 løsning

Hente datoer fra MS Sql db

Jeg har en tabel i en MS Sql db, hvor der bla. er et datofelt (smalldatetime) for nogle personers fødselsdage.

Jeg vil gerne trække en liste, der f.eks. viser hvem der har fødselsdag mellem den 1/1 og 31/1 (eller andre dato-intervaller), men jeg kan ikke få det til at virke efter hensigten.

Jeg skal jo umiddelbart ignorere årstallet, og jeg har forsøgt mig frem med CONVERT(DATETIME, YEAR(Birthday) + MONTH(Birthday) + DAY(Birthday), 102) (og en del forskellige kombinationer af den), for at få det ønskede resultat, men jeg kan se, at convert ikke omdanner datoen til det forventede resultat, uanset hvordan jeg gør det.

Nogle der har en sql-sætning til det?
Avatar billede helmet Nybegynder
28. december 2007 - 18:15 #1
Er ikke helt med på hvad du forsøger at gøre via convert, men
du burde kunne gøre det ved hjælp af datepart
Fx
select * from tabel
where
datepart("m",Birthday) = 1
and
(datepart("d", Birthday) >= 1 and datepart("d", Birthday) <= 15)

Ellers er mssql kategorien nok et bedre bud
Avatar billede kak Nybegynder
28. december 2007 - 18:23 #2
Det virker til dels, men det kunne også være, at det var fra den 20/1 til 28/5 man skal hente en liste på (eller hvad som helt andet), så derfor skal jeg kunne sammensætte dag og måned i udvælgelsen.
Avatar billede nielle Nybegynder
28. december 2007 - 18:31 #3
Noget i denne stil?

SELECT *
FROM dinTabel
WHERE
(
    (
        month(birthday) = 1 AND
        day(birthday) >= 20
    )
    OR
    month(birthday) > 1
)
AND
(
    month(birthday) < 5
    OR
    (
        month(birthday) = 5 AND
        day(birthday) <= 26
    )
)
Avatar billede kak Nybegynder
28. december 2007 - 19:22 #4
nielle, det ser ud til at virke perfekt! Tak for hjælpen og opretter du et svar?
Avatar billede nielle Nybegynder
28. december 2007 - 19:38 #5
Svar :^)
Avatar billede arne_v Ekspert
30. december 2007 - 05:39 #6
Vil:

SELECT * FROM tbl WHERE MONTH(birthday)*100+DAY(birthday) BETWEEN 120 AND 528

virke ?
Avatar billede kak Nybegynder
02. januar 2008 - 19:13 #7
Det kan godt være, men nu virkede nielles forslag, så jeg har ikke lige prøve din udgave af :-) Men den er selvfølgelige lidt kortere, så skal jeg bruge noget tilsvarende igen, vil jeg nok prøve den.
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

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