【发布时间】:2017-03-30 11:04:49
【问题描述】:
我有一个使用 SQL Server 2012 作为数据库的 asp.net Web 应用程序。
网络服务器当前具有美国日期时间格式。 Web 应用程序的代码将日期时间值作为 NOW 传递,一切正常。
现在我尝试使用干净的机器部署这个 Web 应用程序(用于内部测试)。 Web 应用程序再次正常工作。当我尝试将日期时间值传递给 SQL Server 时,问题就出现了。错误是
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围
为了解决这个问题,我将机器的日期时间格式更改为美国日期时间格式,因为这是第一台服务器所做的。不幸的是,它仍然没有运行。
任何想法我都可以尝试什么?
更新我的代码
我的 SQL Server 有用户定义的类型
MyDataTable.Rows.Add(
batchNoRow[0], //Batch ID
DateTime.Now, //Creation Date
);
// Then pass the table type in a stored procedure as below
SqlParameter param = new SqlParameter("@Array", MyDataTable);
SqlCommand cmd = new SqlCommand();
cmd.connection = myconnection;
cmd.CommandText = mycommandText;
cmd.CommandType = commandType;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
@array的定义是sql server中用户定义的类型
CREATE TYPE [dbo].[MyTableType] AS TABLE(
[BatchNo] [int] NOT NULL,
[CreationDate] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED
(
[BatchNo] ASC
)WITH (IGNORE_DUP_KEY = OFF)
)
GO
【问题讨论】:
-
一些代码会有所帮助
-
将 datetime 结构的实例传递给 sql server,这样你就完全不用担心字符串表示默认格式的东西了。
-
将数据库中的数据存储为 DateTime 而不是字符串。
-
SELECT convert(datetime, cast(value as varchar),104)
-
你的 c# DataTable (
MyDataTable) 的列定义是什么?
标签: c# asp.net sql-server datetime