sql datetime参数问题

时间:2010-12-31 05:34:57

标签: c# sql datetime

全部,

我传递的日期参数如下:

 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)

3 个答案:

答案 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,这使得它们能够解析并且无法解释的明确的字符串。

但是,为什么不将值作为日期对象传递而不是转换为字符串?