Avatar billede hulla Novice
15. april 2003 - 16:27 Der er 7 kommentarer og
1 løsning

datetime

Jeg har et datofelt i MsSQL som skal sammenlignes med en streng som jeg laver om til dato med cDate(Dato)..

Jeg får besked på at der sker en fejl ved konvertering fra char data type til DateTime data type...

DateNow = cDate(DateNow)
SelectedDate = cDate(SelectedDate)

SELECT * FROM BirthdayList WHERE NextBirthDay BETWEEN '" & DateNow & "' AND '" & SelectedDate & "'"

Udskriver jeg DateNow og SelectedDate ser det f.eks. sådan ud: 15-04-2003 og 15-04-2004...

På forhånd tak :o)
Avatar billede meyer Nybegynder
15. april 2003 - 16:32 #1
Prøv sådan her:

SELECT * FROM BirthdayList WHERE NextBirthDay BETWEEN #" & DateNow & "# AND #" & SelectedDate & "#"
Avatar billede hulla Novice
15. april 2003 - 16:35 #2
kan det bruges i VB ?
Avatar billede hulla Novice
15. april 2003 - 16:41 #3
Det virker ihvertfald ikke hos mig,... syntaksfejl,..
Avatar billede eagleeye Praktikant
15. april 2003 - 17:18 #4
I access og mySQL skal man overføre dato formatet i yyyy-mm-dd eller mm-dd-yyyy for datoen tolkes rigtigt via SQL. Måske det samme gælder for MSSQL?

DateNow = Year(DateNow) & "-" & Month(DateNow) & "-" & Day(DateNow)
SelectedDate = Year(SelectedDate) & "-" & Month(SelectedDate) & "-" & Day(SelectedDate)
SELECT * FROM BirthdayList WHERE NextBirthDay BETWEEN '" & DateNow & "' AND '" & SelectedDate & "'"
Avatar billede mcgreed Nybegynder
16. april 2003 - 00:48 #5
Jeg har personligt altid problemer med dato/tid i databasen, da jeg tit er ude for at dag og månede bliver byttet om på grund af database vs server region instillinger. Så jeg lavde denne rutine til hver gang jeg skulle bruge en dato i en SQL string:

    Function MediumDateTime(whichDateTime, includeTime)
        ' #############################################################
        ' ## whichDateTime  = The date/time which is to be converted ##
        ' ## includeTime    = 0: Don't include time, 1: include time ##
        ' #############################################################
        if IsDate(whichDateTime)=true Then
            aDay = Day(whichDateTime)
            aMonth = Monthname(Month(whichDateTime),True)
            aYear = Year(whichDateTime)

            MediumDateTime = Day(whichDateTime) & "-" & Monthname(Month(whichDateTime),True) & "-" & Year(whichDateTime)
            If CInt(includeTime)=1 Then
            MediumDateTime = MediumDateTime & " "&Hour(whichDateTime)&":"&Minute(whichDateTime)&":"&Second(whichDateTime)
            end if
        else
            MediumDateTime = "*error, must be date/time*"
        end if
    End Function

Så blot lave din SQL string sådan:
SELECT * FROM BirthdayList WHERE NextBirthDay BETWEEN #" & MediumDateTime(DateNow,0) & "# AND #" & MediumDateTime(SelectedDate,0) & "#"
Avatar billede hulla Novice
16. april 2003 - 09:39 #6
Det ser fint ud mcgreed, men virker ikke helt..

Jeg får formatet 16-apr-2003 ud af det, og det giver ikke direkte fejl, men heller ingen resultater fra DB selvom det burde.

Lidt andet.. i min DB kan jeg læse en dato sådan: 16-04-2003... men laver jeg denne her: Left(NextBirthDay, 3) får jeg: apr ... som om den laver datoen om til apr-16-2003 når man bruger den i en funktion..

Ved du noget om det,. eller har et link til noget ?
Avatar billede mcgreed Nybegynder
16. april 2003 - 11:49 #7
Jeg vil tro at du har lagt en FormateDateTime eller ligende et eller andet sted i scriptet, som blander det sammen...det er dog kun et gæt
Avatar billede hulla Novice
16. april 2003 - 15:21 #8
Det var noget roderi i nogle sql kørsler om natten der gjorde,..men jeg brugte dog også en cDate() som lavede lidt roderi,. tak for hjælpen :o)
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
Kurser inden for grundlæggende programmering

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