28. november 2002 - 16:59Der er
7 kommentarer og 1 løsning
Dato og SQL...
Hej,
Jeg har følgende kode som gerne skulle vælge alle poster der er datomærket inden for et brugerdefineret interval (dato).
Dim Startdato, Slutdato Startdato = Request.Form("Start") Slutdato = Request.Form("Slut") Titel = "Udvidet statistik for besøgende i perioden " & Startdato & " til " & Slutdato & "."
SQL = "SELECT * FROM Statistik WHERE Dato BETWEEN #" & Startdato & "# AND #" & Slutdato & "#" Set rs = Conn.Execute(SQL)
Dato-feltet i min db, indeholder en Now() værdi, med dansk datobetegnelse..altså f.eks. 28-11-2002 16:59:14
Mine to form felter (Startdato og Slutdato) indeholder f.eks. 20-11-2002 og 25-11-2002.
Men af en eller anden grund virker det ikke optimalt. Ved at bruge førnævnte datoer får jeg kun 2 resultater fra 20-11-2002 selvom jeg ved der også er poster fra den 25-11-2002.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er ellers ret enkelt: i SQL skal have datoen i amerikansk format, dvs mm-dd-yyyy.
Du skal ikke bekymre dig om internt dato-formater i databasen, kun om formatet, der bruges i den tekststreng, som aflevers til SQL-driveren.
Men når SQL'en er i orden, så er dit virkelige problem, at du får dine datoer fra en inputform. Her må du først sørge for, at brugeren kun kan indtaste gyldige datoer. Dernæst at få trukket måned, dag og år korrekt ud af det indtastede. De indbyggede funktioner Month(), Day() og Year() giver korrekt resultat, under hensyntagen til LCID, når argumentet er i internt VBScript date/time-format. Er argumentet en tekststreng, vil funktionerne forsøge at gætte sig frem til rækkefølgen, og de gætter ofte forkert, typisk først på måneden og i årets første måneder.
og 3) der er ingen nemme veje ud af detteher. Hvis man vil lave asp-sider, der kan håndtere danske datoer, må man sørge for at have 100% styr på, hvad der foregår i koden. Og en detalje: Den indbyggede konverteringsfunktion CDate tager ikke hensyn til LCID, hvis man forsøger at konvertere en tekststreng til internt datoformat.
Mit bedste råd er at du laver dig et sæt funktioner til de datomanipulationer du har brug for. Sørg for at teste dine funktioner grundigt, både først og sidst på måneden (og året).
eller lave tre tekstboxe til start og tre til slut i formularen! :-} <p> Start:<br> Dag:<input type="tekst" name="stdag"> Måned:<input type="tekst" name="stmd"> Årstal:<input type="tekst" name="staar"> </p> <p> Slut:<br> Dag:<input type="tekst" name="sldag"> Måned:<input type="tekst" name="slmd"> Årstal:<input type="tekst" name="slaar"> </p>
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.