Note that there are some explanatory texts on larger screens.

plurals
  1. POWeird bug when inserting DateTime to sql server 2008
    primarykey
    data
    text
    <p>I'm inserting a datetime field to sql server. From my local computer it works just fine. example: the datetime field in sql server is : "2013-07-31 08:00:00.000", but when I run the application form the server it switches the day and month and insert it like this: "2013-07-31 15:15:00.000".</p> <p>My relevant page loads some entries from the sql server depending on today's date. Like this:</p> <pre><code>public List&lt;act_event&gt; return_event_list(DateTime date) //return all events for spesific date { List&lt;act_event&gt; event_list = new List&lt;act_event&gt;(); String date_sql = date.ToString("yyyy-MM-dd"); using (SqlConnection con = connect("igroup20_test2ConnectionString")) { using (SqlCommand cmd = create_command(con, "select * from act_events where '" + date_sql + "'&gt;=(CAST(e_start as DATE)) and '" + date_sql + "'&lt;=(CAST(e_end as DATE))")) { using (SqlDataReader rdr = cmd.ExecuteReader()) { while (rdr.Read()) { act_event a_event = new act_event(); a_event.e_num = Convert.ToInt32(rdr["e_num"]); a_event.name = rdr["e_name"].ToString(); a_event.start = Convert.ToDateTime(rdr["e_start"]); a_event.end = Convert.ToDateTime(rdr["e_end"]); a_event.description = rdr["e_description"].ToString(); a_event.address = rdr["e_address"].ToString(); event_list.Add(a_event); } } } } return event_list; } </code></pre> <p><strong>This is how I insert the datetime fields:</strong></p> <pre><code>public void add_event(act_event add_avent) { using (SqlConnection con = connect("igroup20_test2ConnectionString")) { using (SqlCommand cmd = create_command(con, "insert into act_events values(@e_name, @e_start, @e_end, @e_description, @e_address)")) { cmd.Parameters.AddWithValue("@e_name", add_avent.name); SqlParameter param2 = new SqlParameter("@e_start", SqlDbType.DateTime); param2.Value = add_avent.start; cmd.Parameters.Add(param2); SqlParameter param3 = new SqlParameter("@e_end", SqlDbType.DateTime); param3.Value = add_avent.end; cmd.Parameters.Add(param3); //cmd.Parameters.Add(new SqlParameter("@e_start", SqlDbType.DateTime)); //cmd.Parameters["@e_start"].Value = DateTime.Parse(add_avent.start.ToString()); //cmd.Parameters.Add(new SqlParameter("@e_end", SqlDbType.DateTime)); //cmd.Parameters["@e_end"].Value = DateTime.Parse(add_avent.end.ToString()); cmd.Parameters.AddWithValue("@e_description", add_avent.description); cmd.Parameters.AddWithValue("@e_address", add_avent.address); cmd.ExecuteNonQuery(); } //using (SqlCommand cmd2=create_command } } </code></pre> <p><strong>I tried changing the select command, adding this:</strong></p> <pre><code>using (SqlCommand cmd = create_command(con, "select * from act_events where ( '" + date_sql + "'&gt;=(CAST(e_start as DATE)) and '" + date_sql + "'&lt;=(CAST(e_end as DATE)) ) or ( '" + date_sql2 + "'&gt;=(CAST(e_start as DATE)) and '" + date_sql2 + "'&lt;=(CAST(e_end as DATE)) ) ")) </code></pre> <p>but for some of the dates it gives me an error:</p> <blockquote> <p>Conversion failed when converting date and/or time from character string.</p> </blockquote> <p>What should I do?</p> <p><strong>EDIT:</strong></p> <p>I tried to run the query from the sql studio itself like this:</p> <pre><code>select * from act_events where ( '2013-08-03'&gt;=(CAST(e_start as DATE)) and '2013-08-03'&lt;=(CAST(e_end as DATE)) ) or ( '2013-03-08'&gt;=(CAST(e_start as DATE)) and '2013-03-08'&lt;=(CAST(e_end as DATE)) ) </code></pre> <p>it gives me:</p> <p><img src="https://i.stack.imgur.com/Gc7uU.jpg" alt="enter image description here"></p> <p>But if I run it like this: (different date)</p> <pre><code>select * from act_events where ( '2013-07-30'&gt;=(CAST(e_start as DATE)) and '2013-07-30'&lt;=(CAST(e_end as DATE)) ) or ( '2013-30-07'&gt;=(CAST(e_start as DATE)) and '2013-30-07'&lt;=(CAST(e_end as DATE)) ) </code></pre> <p>it gives me this error:</p> <p><img src="https://i.stack.imgur.com/JtXjA.jpg" alt="enter image description here"></p> <p><strong>EDIT2:</strong></p> <p><strong>After James suggestion I made a parameterized query like this:</strong></p> <pre><code>String date_sql = date.ToString("yyyy-MM-dd"); String date_sql2 = date.ToString("yyyy-dd-MM"); using (SqlConnection con = connect("igroup20_test2ConnectionString")) { using (SqlCommand cmd = create_command(con, "select * from act_events where @date1&gt;=(CAST(e_start as DATE)) and @date2&lt;=(CAST(e_end as DATE))")) { cmd.Parameters.AddWithValue("@date1", date_sql); cmd.Parameters.AddWithValue("@date2", date_sql); cmd.Parameters.AddWithValue("@date3", date_sql2); cmd.Parameters.AddWithValue("@date4", date_sql2); </code></pre> <p>which still won't load the correct entries from the sql server</p> <p><strong>Then I tried this query:</strong></p> <pre><code>String date_sql = date.ToString("yyyy-MM-dd"); String date_sql2 = date.ToString("yyyy-dd-MM"); using (SqlConnection con = connect("igroup20_test2ConnectionString")) { using (SqlCommand cmd = create_command(con, "select * from act_events where ( @date1&gt;=(CAST(e_start as DATE)) and @date2&lt;=(CAST(e_end as DATE)) ) or ( @date3&gt;=(CAST(e_start as DATE)) and @date4&lt;=(CAST(e_end as DATE)) )")) { cmd.Parameters.AddWithValue("@date1", date_sql); cmd.Parameters.AddWithValue("@date2", date_sql); cmd.Parameters.AddWithValue("@date3", date_sql2); cmd.Parameters.AddWithValue("@date4", date_sql2); </code></pre> <p>And again it just give me:</p> <pre><code>Conversion failed when converting date and/or time from character string. </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload