Avatar billede cskaade Nybegynder
27. november 2008 - 16:48 Der 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?
Avatar billede mortvader Nybegynder
27. november 2008 - 21:50 #1
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.
Avatar billede cskaade Nybegynder
28. november 2008 - 16:15 #2
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?
Avatar billede mortvader Nybegynder
28. november 2008 - 16:21 #3
Nåh yes, der mangler lige en parantes slut:

SQL = "SELECT Count(id) as maxID FROM nyheder WHERE (opretdato between '"&myFormatDateTime(newsdagRS("udsendt"))&"' and '"&myFormatDateTime(Now())&"') and wiew=1"
Avatar billede cskaade Nybegynder
28. november 2008 - 19:16 #4
Fedt så virker det kommer du med et svar
Avatar billede mortvader Nybegynder
28. november 2008 - 19:35 #5
Sweet lovin' :)
God weekend!
Avatar billede cskaade Nybegynder
28. november 2008 - 20:41 #6
Tak for hjælpen
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