Vad tusan! '20050827' Här är c#-koden. Variablerna fromDate och toDate är av typen DateTime. Skicka in datumet i formatet yyyymmdd alltså '20050830' så kommer det att funka. Hej,Fel vid insert av datum
Jag försöker inserta rader i sql server-tabell varav en kolumn har datatypen DateTime. i C#-koden är datatypen DateTime den också. Det lustiga är att om jag kopierar strängen från debuggern strax före insert, och klistrar in den i Query Analyser, går det bra att göra inserten, men inte via C#-koden!! Jag använder ingen sp i detta fallet utan kopplar min sql-sträng till ett command-objekt.
Felmeddelandet är:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value
En annan lustig sak är att de första raderna går igenom, fast olika många varje försök, men sedan kommer felmeddelandet!!
Någon som varit med om detta förut? Byter snart ut de jävla datetime-kolumnerna mot varchar!!
/henrik Sv:Fel vid insert av datum
Skicka i det i SQL Server
Låt in-parametern vara en varchar och kolumnen en datetime.
/mickeSv:Fel vid insert av datum
strSQL.Append("INSERT INTO connections (people1, people2, companyId, comment, fromDate, toDate) VALUES (");
strSQL.Append(people1 + ", " + Int32.Parse(dsData.Tables[0].Rows[j]["ApplicantId"].ToString()) + ", " + companyId + ", '', '" + DateTime.Parse(fromDate + " 00:00:00") + "', '" + DateTime.Parse(toDate + " 00:00:00") + "') ");
SQL-satsen som skapas ser ut som:
INSERT INTO connections (people1, people2, companyId, comment, fromDate, toDate) VALUES (79, 1227, 562, '', '1994-01-13 00:00:00', '1996-07-31 00:00:00')
Och den går utmärkt att klistra in i Query Analyser och exekvera där.Sv: Fel vid insert av datum
Snälla, testa detta och återkom om det INTE funkar.
DateTime.Parse(datum).ToString("yyyyMMdd") har jag för mig att det heter.
/mickeSv: Fel vid insert av datum
Problemet är inte databasen, din resulterande SQL kod är korrekt, precis som du själv kan konstatera med QA.
Felmeddelandet du får kommer från VS.
Grejen är den att ditt SQL kommando skickar datumet som en text och inte som en datetime. Om du skickade in den som datetime så skulle den vara omgiven av # och inte '.
Nu är det ju helt OK att skicka in datumet som text och men det är där det går fel.
Först har du ett datumformat (som är lagrat i en datetime?) som du adderar ihop med en sträng "00:00:00" och här har vi två inkompatibla datatyper. Om du har implicit konvertering påslagen så bör detta resultera i en text.
Nästa steg blir att du omvandlar detta till en datetime som du sedan försäker läga ihop med din SQL kommando text, dvs i textformat. Återigen så har du inkompatibla datatyper och det blir strul.
---
Vad du borde gör istället är att omvandla din ursprungliga datum till text, sedan lägga iop den med "00:00:00" och sedan i sin tur lägga ihop detta med kommandotexten i överigt och se till att din datumsträng är omsluten av '.
Lycka till!
// Johan