需要日期时间插入转换帮助

时间:2012-05-23 12:57:32

标签: c# sql sql-server database datetime

我需要插入格式为dd / mm / yyyy的日期,但不幸的是,此时我的sql从嵌入式插入中抛出以下错误

将varchar数据类型转换为日期时间数据类型会导致超出范围的值。 该声明已被终止。

我认为这是因为数据库正在寻找错误的日期格式。任何人都可以指出我如何让​​数据库找到dd / mm / yyyy的解决方案。我想避免转换代码中的每个日期,因为同时完成了数千个插入。感谢

3 个答案:

答案 0 :(得分:4)

  

我需要插入格式为dd / mm / yyyy的日期

不要思考有关特定格式的内容。日期和时间本身并不具有格式。确保您的数据库字段是与日期/时间相关的类型,然后使用指定DateTimeDateTimeOffset值的参数化SQL。那样你的代码根本不处理字符串

错误在于讨论来自varchar的转换这一事实表明您将数据作为字符串提供。你不应该这样做。即使您的输入格式是文本,您也应该尽早将其转换为自然数据类型(例如DateTimeOffset) - 这样可以更轻松地使用它整个代码库中的数据。

答案 1 :(得分:1)

您可以使用convert并将103指定为样式。

convert(datetime, YourColumn, 103)

或者你可以set the date format

set dateformat dmy

答案 2 :(得分:1)

您的日期文字应始终采用安全,明确且与语言无关的格式。所以你的嵌入式SQL应该是:

INSERT dbo.table(column) VALUES('YYYYMMDD');

您可以使用ToString()在C#中以这种方式轻松格式化字符串。

但更好的是,您应该使用参数化语句,传递正确的日期时间参数,而不必担心字符串格式。