22. juni 2009 - 14:26Der er
8 kommentarer og 1 løsning
datoformat problemer med sql
jeg forsøger at lave en booking del til et udlånssystem problemet er at det eksisterende system arbejder med datoformat dd-mm-yyyyy og sådan er det gemt i databasen(MsSql) men nu har jeg det problem at jeg skal checke om en dato (d) er større/mindre end datoerne i databasen, men det melder fejl i sql sætningen hvis jeg ikke formaterer den til mm-dd-yyyy
DateTime d = DateTime.Parse(datebox.Text.ToString());
Sqltxt="SELECT COUNT(id) FROM book_db WHERE ( serial='" + serial.Text.ToString() + "' AND book_date >='" + d.ToString("mm-dd-yyyy") + "')";
Hvis book_date ligger som en datetime i databasen, bør det vøre lige meget hvordan den som standard ser ud, når du henter den ud som tekst.
En datetime bliver ikke gemt som yyyy-mm-dd i databasen (med mindre den ligger som en varchar), den bliver gemt som et eget binært datetime format. Det er først når du SELECT'er fra tabellen, at den bliver konverteret til tekst, så du kan se noget der giver mening.
Prøv dette:
DateTime d = DateTime.Parse(datebox.Text.ToString());
Sqltxt="SELECT COUNT(id) FROM book_db WHERE ( serial=@serial AND book_date >= @bookdate)
using (SqlConnection connection = new SqlConnection(connectionstring)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = Sqltxt; command.Parameters.AddWithValue(@serial, serial.Text.ToString()); command.Parameters.AddWithValue(@bookdate, d);
//Nu kan du Execute din command, eller bruge den i en DataAdapter, eller hvad du nu gør. } }
Brug parameter, det er løsningen på alle sådanne problemer.
Undskyld at jeg sendte et link til et MySQL eksempel i min tidligere kommentar. Jeg var ikke helt vågen.
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.