Avatar billede set Nybegynder
14. maj 2007 - 20:44 Der er 10 kommentarer og
1 løsning

hente en dato fra SQL database

Jeg skal hente en startdato og en slutdato med en dato i en sqldatabase. datoen er gemt som en streng og dette kan jeg ikke lave om.
Nu melder problemmet sig  -  hvordan får jeg sammenlignet denne dato med de datoer som brugeren kan indtaste (startdato og slutdato) for at finde antal medlemmer i den givne periode.
Har næsten prøvet alt muligt så nu håber jeg eksperten kan hjælpe.
På forhånd mange tak.
Avatar billede dr_chaos Nybegynder
14. maj 2007 - 20:47 #1
SELECT * FROM tabel WHERE getdate() BETWEEN CONVERT(DateTime,StartDate ) AND Convert(DateTime,EndDate)
Avatar billede set Nybegynder
14. maj 2007 - 21:33 #2
Jeg kan ikke få det til at virke

min dato ligger gemt i et felt der hedder  tilmeldt og er i nvarchar format.

SELECT DISTINCT medlemnr FROM tblBruger6000Web WHERE tilmeldt between Convert(datetime, " & DBdato(startdato) & ") and Convert(datetime, " & DBdato(slutdato) & ") "

jeg ved ikke hvordan man sammenligner og henter disse data
Avatar billede set Nybegynder
14. maj 2007 - 21:34 #3
jeg får også følgende fejl

Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)
[Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime
Avatar billede dr_chaos Nybegynder
14. maj 2007 - 21:39 #4
hvordan ser dit format ud på datoen ?
Avatar billede set Nybegynder
14. maj 2007 - 21:47 #5
xx-xx-xxx
Avatar billede set Nybegynder
14. maj 2007 - 21:47 #6
undskyld 
01-01-2007
Avatar billede dr_chaos Nybegynder
14. maj 2007 - 21:59 #7
jeg har testet med:
declare @test nvarchar(10),@d datetime
SET @test = '01-01-2007'

SELECT @d=CONVERT(DateTime ,@test,105)

SELECT @d

Det virker.

prøv lige med :


SELECT DISTINCT medlemnr FROM tblBruger6000Web WHERE CONVERT(DateTime ,tilmeldt) between "& DBdato(startdato) & " and " & DBdato(slutdato)
Avatar billede dr_chaos Nybegynder
14. maj 2007 - 22:00 #8
Du kan evt prøve at teste lidt i query analyzer som jeg har gjort.
Avatar billede set Nybegynder
14. maj 2007 - 22:06 #9
Jeg får stadig den samme fejlmeddelelse

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)
[Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime.
Avatar billede set Nybegynder
14. maj 2007 - 22:13 #10
ved at bruge dit forslag med en lille ændring
SELECT DISTINCT medlemnr FROM tblBruger6000Web WHERE CONVERT(DateTime ,tilmeldt,105) between "& DBdato(startdato) & " and " & DBdato(slutdato)

så får jeg ingen fejl, men den kan heller ikke finde nogen data på søgningen.
så nu kom vi så langt
Avatar billede set Nybegynder
15. maj 2007 - 21:50 #11
jeg har fundet en løsning ved at hente alle records og derefter søge i resultatet med følgende kode
      do while not rsantal.EOF
    if  Dato(rsAntal("afmeldt")) >= dato(startdato) and  Dato(rsAntal("afmeldt")) <= dato(slutdato) then
      antal = antal + 1
    end if
    rsAntal.movenext
    loop
så jeg lukker spørgsmålet
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