-1

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

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。

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

4

3 回答 3

4

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

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

错误正在谈论转换的事实varchar表明您将数据作为字符串提供。你不应该那样做。即使您的输入格式是文本,您也应该尽早将其转换为其自然数据类型(例如DateTimeOffset)——这将使您在整个代码库中处理数据变得更加容易。

于 2012-05-23T13:00:57.617 回答
1

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

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

您可以在 C# 中使用ToString().

但更好的是,您应该使用参数化语句,传递适当的日期时间参数,并且根本不用担心字符串格式。

于 2012-05-23T13:02:29.590 回答
1

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

convert(datetime, YourColumn, 103)

或者您可以设置日期格式

set dateformat dmy
于 2012-05-23T12:59:47.447 回答