02. maj 2006 - 13:17
Der er
20 kommentarer og 1 løsning
The conversion of a char data type to a datetime data type
Er der nogen der kan fortælle hvad årsagen til denne fejlmeddelelse er? The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value Den opstår i forbindelse med at der skal søges 1 døgn baglæns i en sql database. Dato feltet er af DataType "DateTime".
Annonceindlæg fra Cornerstones
Er det noget med at du har et tekstfelt hvori du angiver hvor mange dage tilbage du vil gå, eksempel vis indtaster 1 for at gå en dag tilbage? I så fald vil jeg tro det er fordi den forsøger at parse char'en 1 til en datetime, løsnigen kunne være noget a la: DateTime dt = DateTime.Now.AddDays(-double.Parse(textBox1.Text));
Jeg har ikke noget tekstfelt jeg indtaster i, trækket fra databasen skal ske i det øjeblik jeg trykker på en knap.
et DateTime fra databasen som du vil trække en dag fra?
Ja præcis. Koden ser sådan ud: private void Button1_Click(object sender, System.EventArgs e) { if (!(IsPostBack)) { return; } //CultureInfo ci=new CultureInfo("da-DK"); string strConnection; string Sql = "SELECT * FROM dbo.log_Data WHERE Kontrol=@Kontrol AND Dato <= '"+ DateTime.Now.AddDays(-1) +"' ORDER BY Dato"; strConnection = "user id=Webuser;password=xxxx;"; strConnection += "initial catalog=log;server= sqlNY;"; strConnection += "Connect Timeout=30"; SqlConnection conn = new SqlConnection( strConnection ); SqlCommand cmd = new SqlCommand( Sql, conn ); cmd.Parameters.Add( new SqlParameter( "@Kontrolrum", DropDownList1.SelectedValue )); DataSet ds = new DataSet(); SqlDataAdapter adpt = new SqlDataAdapter( cmd ); cmd.Connection.Open(); try { adpt.Fill( ds ); } finally { cmd.Connection.Close(); } DataGrid1.DataSource = ds; DataGrid1.DataBind(); }
Prøv med: string Sql = "SELECT * FROM dbo.log_Data WHERE Kontrol=@Kontrol AND Dato <= '"+ DateTime.Now.AddDays(-1) +"' ORDER BY Dato"; convert(varchar(10), '" + DateTime.Now + "', 112) <= convert(varchar(10), getdate() - 1, 112)
ups sorry mente: string Sql = "SELECT * FROM dbo.log_Data WHERE Kontrol=@Kontrol AND Dato <= convert(varchar(10), '" + DateTime.Now + "', 112) <= convert(varchar(10), getdate() - 1, 112) ORDER BY Dato";
Jeg får følgende fejl: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '03-05-2006 11:25:15'.
Ups det gik vist lidt for stærkt: string Sql = " SELECT * FROM dbo.log_Data WHERE Kontrol=@Kontrol AND convert(varchar(10), Dato, 112) <= convert(varchar(10), getdate() - 1, 112) ORDER BY Dato";
Husk at fjerne linieskiftene eller brug: string Sql = @" SELECT * FROM dbo.log_Data WHERE Kontrol=@Kontrol AND convert(varchar(10), Dato, 112) <= convert(varchar(10), getdate() - 1, 112) ORDER BY Dato";
Hvis jeg bruger ovenstående får jeg denne fejl: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near '<'.
prøv med single plinger om din kontrol var. string Sql = @" SELECT * FROM dbo.log_Data WHERE Kontrol='@Kontrol' AND convert(varchar(10), Dato, 112) <= convert(varchar(10), getdate() - 1, 112) ORDER BY Dato";
Problemet er stadig det samme.
prøv med en statisk værdi i stedet for Kontrol...
Der skal både kigges på kontrol og dato, da kontrol er en værdi der bliver valgt i en ddl som der så sorteres udfra.
jo men kunne du for testens skyld ikke prøve at hardcode kontrol variablen i stedet for at lade den være en parameter. Har en anelse om at det er der den er gal for: convert(varchar(10), Dato, 112) <= convert(varchar(10), getdate() - 1, 112) virker fint her....
Hvis jeg bruger den sådan her udskrives alt hvad der er i tabellen: string Sql = "SELECT * FROM dbo.Rensningslog_Data WHERE convert(varchar(10), Dato, 112) <= convert(varchar(10), getdate() - 1, 112) ORDER BY Dato";
vel ikke dem hvor Dato kolonens værdi er idag?
Nej alle før datoen idag.
var det ikke også det som dit spørgsmål oprindeligt gik på?
Nej der skulle søges ét døgn baglæns, jeg har sådan set fået løst problemet. Så du kan jo lige smide et svar.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.