将varchar数据类型转换为日期时间数据类型时出错会导致超出范围的值

时间:2015-04-25 05:21:12

标签: c# sql-server datetime

我将日期插入数据库,我收到此错误

  

varchar数据类型转换为datetime数据类型会导致超出范围的值。

我的数据库就像

column   datatype
-----------------
id       int
date     datetime

我当前的日期格式为DD/MM/YYYY。但它并不接受。当我将格式(系统日历中的更改而非编程中的更改)更改为YYYY/DD/MM时,它可以正常工作。

为什么上述格式不起作用?

我的查询是

cmd = new SqlCommand("insert into tblnewaccount values ('" + id + "','" + dateTimePicker1.Text + "')", con);

cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:2)

  

为什么上述格式不起作用?

老实说,我不是关心你都不应该这样做。因为你在做一些非常错误的事情而不是使用正确的格式。

您尝试将DateTimedatetime代表值保存在Bad habits to kick : choosing the wrong data type类型列中。您应该始终为您的值选择正确的数据类型。

首先,请勿使用string的{​​{1}}属性,使用parameterized queries将值设为Text。你应该总是使用SQL Injection。这种字符串连接对https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html攻击开放。

DateTimePicker

答案 1 :(得分:1)

它不起作用,因为它将被识别为string而不是有效的DateTime对象值。您可以尝试将其转换为有效的日期时间格式,以便它可以识别它。此外,您可以将text值显示为dd / MM / yyyy,就像现在显示的那样,但如果它为您提供了正确的日期时间格式,则会在查询中传递value参数。

查看从字符串到日期时间的转换。在这种情况下,这将给你清楚的想法。

希望这有帮助。