全部,
我传递的日期参数如下:
DateTime date = DateTime.Now;
date.ToString("YYYY-MM-DD 00:00:00:000");
但是得到这个例外:
System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. at System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) at System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime value)
答案 0 :(得分:2)
秒和毫秒之间应该有一个小数点。格式字符串区分大小写。尝试:
date.ToString("yyyy-MM-dd")
或
date.ToString("yyyy-MM-dd HH:mm:ss.fff")
还要问问自己是否真的需要将参数转换为字符串。它闻起来很奇怪,可能没有必要。如果只想传递日期而不传递时间,则将DateTime对象的Date属性作为参数值传递。保持强类型以避免SQL注入,性能和类型转换问题。
答案 1 :(得分:0)
此处未传递参数,您发布的代码示例通过查看生成的SqlTypeException
日期格式也应为:
date.ToString("yyyy-MM-dd HH:mm:ss:fff")
答案 2 :(得分:0)
如果你试图忽略时间部分(因此你的零)尝试
date.ToString("yyyy-MMM-dd");
如果你也想要时间部分......
date.ToString("yyyy-MMM-dd hh:mm:ss.fff tt");
请注意,这两个月都有3个Ms,这使得它们能够解析并且无法解释的明确的字符串。
但是,为什么不将值作为日期对象传递而不是转换为字符串?