14. september 2005 - 20:13
Der er
10 kommentarer og 1 løsning
DataTime kan ikke gemme i SQL
Jeg får denne her fejl: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. UPDATE [TBL_User] SET [exp_date] = '17-06-2006 00:00:00' WHERE [user_id] = 2614 Hvad skal jeg gøre for at kunne gemme det i MSSQL? Den kommer ind som en alm DateTime
Annonceindlæg fra Barco
14. september 2005 - 20:15
#1
hurtigt: få vendt formatet så det passer til det databasen forventer bedst (ihvertfald hvis du har lidt erfaring): brug parameters
14. september 2005 - 20:16
#2
17-06-2006 virker ikke så prøver man 2006-06-17 06-17-2006 etc.
14. september 2005 - 20:27
#3
ja det ved jeg godt men hvad betyder det at bruge params ?
14. september 2005 - 20:28
#4
at du beder ADO.NET selv ordne det med dato formater ! :-) jeg kommer lige med et eksempel
14. september 2005 - 20:38
#5
using System; using System.Threading; using System.Data; using System.Data.SqlClient; class MainClass { public static void Main(string[] args) { SqlConnection con = new SqlConnection("server=ARNEPC3;Integrated Security=SSPI;database=Test"); con.Open(); SqlCommand cre = new SqlCommand("CREATE TABLE dtest (i INTEGER PRIMARY KEY, d DATETIME)", con); cre.ExecuteNonQuery(); SqlCommand ins = new SqlCommand("INSERT INTO dtest VALUES (@i, @d)", con); ins.Parameters.Add("@i", SqlDbType.Int); ins.Parameters.Add("@d", SqlDbType.DateTime); for (int i = 0; i < 10; i++) { ins.Parameters["@i"].Value = i; ins.Parameters["@d"].Value = DateTime.Now; ins.ExecuteNonQuery(); Thread.Sleep(1000); } Console.WriteLine("All rows :"); SqlCommand sel = new SqlCommand("SELECT * FROM dtest", con); SqlDataReader rdr = sel.ExecuteReader(); while (rdr.Read()) { int iv = (int)rdr[0]; DateTime dv = (DateTime)rdr[1]; Console.WriteLine(iv + " " + dv); } rdr.Close(); Console.WriteLine("Rows last 5 seconds since " + DateTime.Now + " :"); SqlCommand sel2 = new SqlCommand("SELECT * FROM dtest WHERE d > @d", con); sel2.Parameters.Add("@d", SqlDbType.DateTime); sel2.Parameters["@d"].Value = DateTime.Now.AddSeconds(-5); SqlDataReader rdr2 = sel2.ExecuteReader(); while (rdr2.Read()) { int iv = (int)rdr2[0]; DateTime dv = (DateTime)rdr2[1]; Console.WriteLine(iv + " " + dv); } rdr2.Close(); SqlCommand drp = new SqlCommand("DROP TABLE dtest", con); drp.ExecuteNonQuery(); con.Close(); } }
14. september 2005 - 20:38
#6
pointen er at vi intet sted angiver dato/tid i tekst format
14. september 2005 - 20:44
#7
jeg kigger på det i morgen.. nu er der fodbold på 3+ det er trods alt vigtigere end arbejde :D
14. september 2005 - 23:09
#8
yes sir.. det virker perfekt.. bare kom med et svar..
15. september 2005 - 08:38
#9
svar
16. september 2005 - 10:32
#10
arne_v, jeg har tit tænkt på at lave en artikel omkring dette, men har aldrig haft tid, måske det var noget for dig?
16. september 2005 - 11:04
#11
tja - måske !
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.