23. januar 2009 - 13:38Der er
8 kommentarer og 1 løsning
Converting Text til datatime
I en sql server 2005 database, har jeg en kolonne af typen datetime. Jeg vil foretager en søgning og visning af nogle felter af tabellen, hvor datoen skal være 1 måned før og efter en bestemt dato, der indtastes i webformen i en textbox. Jeg har prøvet med nedenstående men får denne fejl: System.Data.SqlClient.SqlException: Conversion failed when converting datetime from character string......
Brug SqlParameter klassen for at parse parametre til SQL Serveren, i stedet for bare at putte det ind i en string. Konvertere indholdet af dine tekstbokse til en DateTime før du parser dem ind i en parameter. Så slipper du alt sådan noget bøvl.
Bare sig til, hvis du har problemer med at få det til, så skal jeg give dig lidt eksempelkode. Man lærer bare ofte bedre ved selv at finde ud af tingene.
Jeg kan stadigvæk ikke trække 3 kolonner fra databasen, hvor den tredje kolonne er af typen DateTime og værdien skal læses fra 2 teksbokse i webformen (skal vise poster, hvor datoen ligger mellem disse 2 tekstboks values) og vise den i en datagrid:( Jeg tror, at mit problem er at convertere teksten i 2 tekstbokse rigtig til DateTime format. Jeg har lagt sql-delen i en stored procedure:
ALTER procedure [dbo].[minDatoInterval] @d1 datetime, @d2 datetime AS Select Navn, Adresse, Dato From Tabel1 inner join Tabel2 ON Tabel1.Regnr = Tabel2.Regnr Where Dato Between @d1 AND @d2
-----------
Og her er min Codebehind kode: --------------- ... ... ... protected void btnSoeg_Click(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MemberConnectionString"].ConnectionString); SqlCommand sel = new SqlCommand("minDatoInterval", conn); sel.CommandType = CommandType.StoredProcedure; sel.Parameters.Add("@d1", SqlDbType.DateTime); sel.Parameters.Add("@d2", SqlDbType.DateTime); sel.Parameters["@d"].Value = Convert.ToDateTime(txtDato1.Text); sel.Parameters["@d2"].Value = Convert.ToDateTime(txtDato2.Text); conn.Open(); SqlDataReader rdr = sel.ExecuteReader(); dg.DataSource = rdr; if (rdr.Read()) { try { if (dg.PageCount == 1) { DataBind(); } else { dg.CurrentPageIndex = 0; DataBind(); } } catch (Exception ex) { Response.Write(ex.ToString()); } finally { conn.Close(); } } }
Server Error in '/' Application. -------------------------------------------------------------------------------- String was not recognized as a valid DateTime...........
(jeg var også noget puzzeled af den fejl besked i forhold til koden)
Synes godt om
Ny brugerNybegynder
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.