Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在将Excel导入SQL Server时插入日期_C#_Sql_Sql Server - Fatal编程技术网

C# 如何在将Excel导入SQL Server时插入日期

C# 如何在将Excel导入SQL Server时插入日期,c#,sql,sql-server,C#,Sql,Sql Server,我将一个Excel文件加载到SQL Server中,它工作正常,但我想在导入此文件时附加当前日期。这意味着每一行都将加载日期数据。因此,每次加载文件时,新数据都应采用当前日期,而旧数据仍保留旧日期 我该怎么做 导入Excel文件的代码: string ssqltable = comboBox1.GetItemText(comboBox1.SelectedItem); string myexceldataquery = "select * from [" + ssqltable + "$]";

我将一个Excel文件加载到SQL Server中,它工作正常,但我想在导入此文件时附加当前日期。这意味着每一行都将加载日期数据。因此,每次加载文件时,新数据都应采用当前日期,而旧数据仍保留旧日期

我该怎么做

导入Excel文件的代码:

string ssqltable = comboBox1.GetItemText(comboBox1.SelectedItem);
string myexceldataquery = "select * from [" + ssqltable + "$]";

try
{
    OleDbConnection oconn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + imagepath + ";Extended Properties='Excel 12.0 Xml; HDR=YES;IMEX=1;';");

    string ssqlconnectionstring = "Data Source=.;Initial Catalog=Bioxcell;Integrated Security=true";

    OleDbCommand oledbcmd = new OleDbCommand(myexceldataquery, oconn);
    oconn.Open();

    SqlBulkCopy bulkcopy = new SqlBulkCopy(ssqlconnectionstring);

    DataTable dt = new DataTable();
    dt.Load(oledbcmd.ExecuteReader());
    bulkcopy.DestinationTableName = ssqltable;

    for (int i = 0; i < dt.Columns.Count; i++)
    {
        bulkcopy.ColumnMappings.Add(i, i);
    }

    bulkcopy.WriteToServer(dt);
    oconn.Close();
}

没有错误,只插入了一个日期。如何解决此问题?

如果您可以控制该表,则可以创建一个默认值为GETDATE的新日期列:


Ref:

添加的每一行都将采用当前日期?正确。链接到MS doc尼斯。。这是可行的,但我如何制作日期格式,如2017年12月4日DDE根据您的SQL server版本,您可以在SELECT语句格式“dd/MM/yyyy”、“en-US”中使用以下命令之一,或者对于较旧的版本CONVERTNVARC30,103我的SQL server版本为2008如何从设计中执行?
if (ssqltable == "Overseas")
{
    conn.Open();

    SqlCommand sqlc = new SqlCommand("delete from Overseas where Bonus = 'Bonus'", conn);
    sqlc.ExecuteScalar();

    SqlCommand Update1 = new SqlCommand("Update Overseas set ID = 1 Where ProductCode = 9630", conn);
    Update1.ExecuteNonQuery();

    SqlCommand Update2 = new SqlCommand("Update Overseas set ID = 2 Where ProductCode = 9628", conn);
    Update2.ExecuteNonQuery();

    SqlCommand Update3 = new SqlCommand("Update Overseas set ID = 3 Where ProductCode = 9629", conn);
    Update3.ExecuteNonQuery();

    SqlCommand Update4 = new SqlCommand("Update Overseas set ID = 4 Where ProductCode = 9632", conn);
    Update4.ExecuteNonQuery();

    SqlCommand Update5 = new SqlCommand("Update Overseas set ID = 5 Where ProductCode = 9631", conn);
    Update5.ExecuteNonQuery();

    SqlCommand Update6 = new SqlCommand("insert into Overseas (Date) Values (GETDATE())", conn);
    Update6.ExecuteNonQuery();
}
ALTER TABLE <tablename>
ADD ROW_CREATE_TS DATETIME DEFAULT GETDATE()