我正在提取日期格式的字符串(yyyy-MM-dd),然后将其转换为DateTime
并使用storedprocedure将其插入数据库。但我一直在
System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
我的表格中的列类型为date
。
我通过调用2016-01-15
来转换我的字符串(例如DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null)
),然后我取出该值并将其作为参数插入到我的StoredProcedure中并执行proc。
但是在使用调试器时,我可以看到返回值实际上是yyyy-MM-dd HH:mm:ss
- 格式化的DateTime。
这是代码如何显示的示例
string expirationDate = GetDate();
DateTime date = DateTime.ParseExact(expirationDate, "yyyy-MM-dd", null);
ExecuteMyStoredProc(date);
答案 0 :(得分:1)
DateTime convertedInitDate = DateTime.ParseExact(initDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
cCCBEntities.initDate = convertedInitDate;
上面的代码是我在遇到同样的问题时使用的代码,我一直在寻找5小时。谢天谢地,上面的代码我的解决了。
答案 1 :(得分:0)
试试这个
string expirationDate = DateTime.Now.ToString();
string date = Convert.ToDateTime(expirationDate).ToString("yyyy-MM-dd");
DateTime dt = DateTime.ParseExact(date, "yyyy-MM-dd", null);
ExecuteMyStoredProc(dt);
答案 2 :(得分:0)
你可以这样做
string expirationDate = GetDate();
string date = Convert.DateTime(expirationDate).ToString("yyyy-MM-dd");
答案 3 :(得分:0)
首先在代码中获取有意义的日期值:
DateTime myDate = DateTime.ParseExact(expirationDate, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture)
但是,您仍然可以在myDate
的调试器中获取时间值,因为它是一个DateTime对象。
您的SP是下一个问题。将其更改为:
INSERT INTO MyTable (MyDate) Values (Convert(DateTime,@expiration_date,111)) --yyyy/mm/dd
SQL Server的转换代码为here。