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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.