我需要插入格式为 dd/mm/yyyy 的日期,但不幸的是,目前我的 sql 正在从嵌入式插入中抛出以下错误
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。
我相信这是因为数据库正在寻找错误的日期格式。谁能指出我如何让数据库查找 dd/mm/yyyy 的解决方案。我想避免转换代码中的每个日期,因为同时完成了数千个插入。谢谢
我需要插入格式为 dd/mm/yyyy 的日期,但不幸的是,目前我的 sql 正在从嵌入式插入中抛出以下错误
将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。该语句已终止。
我相信这是因为数据库正在寻找错误的日期格式。谁能指出我如何让数据库查找 dd/mm/yyyy 的解决方案。我想避免转换代码中的每个日期,因为同时完成了数千个插入。谢谢
我需要插入格式为 dd/mm/yyyy 的日期
不要考虑特定的格式。日期和时间本身没有格式。确保您的数据库字段是与日期/时间相关的类型,然后使用指定DateTime
或DateTimeOffset
值的参数化 SQL。这样你的代码根本不处理字符串。
错误正在谈论转换的事实varchar
表明您将数据作为字符串提供。你不应该那样做。即使您的输入格式是文本,您也应该尽早将其转换为其自然数据类型(例如DateTimeOffset
)——这将使您在整个代码库中处理数据变得更加容易。
您的日期文字应始终采用安全、明确且与语言无关的格式。所以你的嵌入式 SQL 应该是:
INSERT dbo.table(column) VALUES('YYYYMMDD');
您可以在 C# 中使用ToString()
.
但更好的是,您应该使用参数化语句,传递适当的日期时间参数,并且根本不用担心字符串格式。