【发布时间】:2015-07-25 12:47:18
【问题描述】:
我正在使用 C# 应用程序将 Excel 文件中的数据导入 SQL Server。我的工作表包含一些日期时间列。
无论我的系统日期时间设置为什么格式(dd/mm/yyyy 或 mm/dd/yyyy 或任何其他格式)以及我的日期时间值在 Excel 工作表中的格式如何,我都可以在 SQL Server 中正确加载它,而无需任何错误。目前,如果我的系统日期时间为mm/dd/yyyy,则保存数据,但如果我将系统格式更改为dd/mm/yyyy,则保存操作失败。
保存功能:
public int InsertSetting(DataRow drow)
{
int Result = 0;
try
{
OdbcParameter[] p = new OdbcParameter[9];
p[0] = new OdbcParameter("@ID", drow["ID"].ToString().Trim());
p[1] = new OdbcParameter("@ComID", drow["CompanyID"].ToString().DbNullIfNullOrEmpty());
p[2] = new OdbcParameter("@Mod", drow["ModuleID"].ToString().DbNullIfNullOrEmpty());
p[3] = new OdbcParameter("@Stat", drow["Status"].ToString());
p[4] = new OdbcParameter("@EnterBy", drow["EnterBy"].ToString().DbNullIfNullOrEmpty());
p[5] = new OdbcParameter("@EnterDate", (drow["EnterDate"].ToString() == "" || drow["EnterDate"].ToString() == "NULL") ? (object)DBNull.Value : drow["EnterDate"].ToString());
p[6] = new OdbcParameter("@UpdateBy", drow["UpdateBy"].ToString().DbNullIfNullOrEmpty());
p[7] = new OdbcParameter("@UpdateDate", (drow["UpdateDate"].ToString() == "" || drow["UpdateDate"].ToString() == "NULL") ? (object)DBNull.Value : drow["UpdateDate"].ToString());
p[8] = new OdbcParameter("@Mode", 7);
Result = //calling stored procedure to save data
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "InsertSetting()");
}
return Result;
}
以mm/dd/yyyy 格式读取输入日期和更新日期。
我无法理解到底是什么问题以及我与系统 Datetime 格式有什么关系。
【问题讨论】:
-
请向我们展示您的 C# 代码以将 Excel 工作表加载到 SQL Server 中!
-
如果您的目标表需要日期,则创建日期类型的参数而不是字符串。这是你所有问题的根源
-
EnterDate 和 UpdateDate 是过程中的日期时间参数。它们不是 sp 中的 varchar。
-
你试过
SET DATEFORMAT MDY; -
你希望我使用 SET DATEFORMAT MDY;在 sql server 中?但是我在 excel 中的日期值可以是任何格式,系统日期格式可以是任何格式..
标签: c# sql sql-server excel