27. november 2008 - 16:48Der er
5 kommentarer og 1 løsning
Dato problem i SQL udtræt
Hejsa
Jeg håber I kan hjælp mig, jeg er løbet ind i et problem med dansk og engelsk dato format, når jeg laver et SQL udtræt til en MySQL database.
Jeg har prøvet 3 forskellige SQL udtræt, og det eneste der virker er, hvor jeg selv skriver datoen på den engelske format.
Dette SQL udtræt virker SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between '2008-11-18 08:22:00' and '2008-11-25 22:30:00') and wiew=1"
Virker ikke SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between FormatDateTime("& newsdagRS(" udsendt") &") and FormatDateTime(Now()) and wiew=1"
Virker heller ikke SQL = "SELECT * FROM nyheder WHERE (opretdato BETWEEN “&newsdagRS(" udsendt")&” AND Now()) and wiew=1 ORDER BY arrdato"
I min ASP sige, at har jeg ”Session.LCID = 1030” og ”<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">” som jo skulle gøre, at der var dansk format, jeg skal bruge i forbindelse med min MySQL database.
Er der nogle som ved, hvorfor jeg ikke kan få den til at tælle, hvor mange poster der er, at uden jeg selv skriver dato oplysningerne?
Jeg har ikke selv arbejdet med mySQL, men så vidt jeg kan forstå dit problem, vil det kunne løses ved at lave en function som formatterer en dato på den måde du bruger i eksemplet der virker...
Den kunne se ud som noget i den stil:
function myformatdatetime(datetime) dim d,m,y,h,n,s y=datepart("yyyy",datetime) m=datepart("m",datetime) d=datepart("d",datetime) h=datepart("h",datetime) n=datepart("n",datetime) s=datepart("s",datetime)
myformatdatetime=y&"-"&right("0"&m,2)&"-"&right("0"&d,2)&" "&right("0"&h,2)&":"&right("0"&m,2)&":"&right("0"&s,2) end function
Så bruger du functionen til at bygge din SQL sætning..
SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between "&myFormatDateTime(newsdagRS("udsendt"))&" and "&myFormatDateTime(Now)&" and wiew=1"
Jeg har altså ikke testet det, men prøv da, så kan det være vi kan hjælpes ad med resten, hvis det bliver ved at drille.
Jeg tror, at det er det helt rigtige, at du har fat i for det er min dato, der skal formateres rigtigt, men der kommer en lille fejl, når jeg sætter det ind nemlig denne her:
Microsoft OLE DB Provider for ODBC Drivers error '80040e09' [MySQL][ODBC 3.51 Driver][mysqld-4.1.21-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mail.asp, line 153
Linie 152 og 153 er
SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between '"&myFormatDateTime(newsdagRS("udsendt"))&"' and '"&myFormatDateTime(Now())&"' and wiew=1" Set RSmax = Conn.Execute(SQL)
Som du kan se har jeg sat ‘ ind for, at den skal læse hele dato og tiden samlet.
Kan du se hvad problemet er det I SQL del eller i funktion?
SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between '"&myFormatDateTime(newsdagRS("udsendt"))&"' and '"&myFormatDateTime(Now())&"') and wiew=1"
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.