如何在将数据插入SQL Server 2008时自动插入当前日期

时间:2017-04-11 11:57:59

标签: c# sql-server sql-server-2008

我只有一个Excel文件,然后将其加载到SQL Server 2008中。

我想将当前日期插入到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();
}     

我用过这个,但我知道只插入最后一条记录 我想在新创建的行中插入当前日期,并且不会丢失以前的列日期..例如,当我每次插入新日期时插入数据时保存旧日期旧数据

SqlCommand Update6 = new SqlCommand("insert into Overseas (Date) Values('" + DateTime.Now.ToShortDateString() + "')", conn);
Update6.ExecuteScalar();

使用

 SqlCommand Update6 = new SqlCommand("insert into Overseas (Date) Values (GETDATE())", conn);
                        Update6.ExecuteNonQuery();

结果是

enter image description here 那么解决方案是什么?

3 个答案:

答案 0 :(得分:1)

您只需使用 Datetime.Now(); 功能即可获取当前日期。

另外,使用zzz格式说明符将时区偏移量设置为小时和分钟。您还希望使用HH格式说明符以24小时格式获取小时数。

DateTime.Now.ToString( “YYYY-MM-DDTHH:MM:sszzz”)

结果:

2011-08-09T23:49:58+02:00

某些文化设置使用句点而不是冒号来表示时间,因此您可能希望使用文字冒号而不是时间分隔符:

DateTime.Now.ToString("yyyy-MM-ddTHH':'mm':'sszzz")

Custom Date and Time Format Strings

希望这对你有用..谢谢

答案 1 :(得分:0)

为此目的有一个函数GETDATE()。

  

将当前数据库系统时间戳记作为日期时间值返回   没有数据库时区偏移量。这个值来源于   SQL Server实例的计算机操作系统   正在运行。

https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql

答案 2 :(得分:0)

GETDATE()设置为Overseas表的Date列的默认约束。

添加约束的SQL命令:

ALTER TABLE Overseas
ALTER COLUMN Date DATETIME NOT NULL DEFAULT GETDATE()

发布此内容时,您无需在插入时将任何值传递给此列。只需插入剩余的列,就会自动插入。

OR

试试这个:

SqlCommand Update6 = new SqlCommand("insert into Overseas (Date) Values (GETDATE())", conn);
Update6.ExecuteScalar();

根据您的数据库屏幕截图,希望此查询有助于:

INSERT INTO Overseas (EnglishName,ProductCode,ProductName,TerritoryCode,TerritoryName,Salesvalue,CreditValue,NetSalesValue,Sales,Bonus,Bioxellbricks,BioxellTerritories,Date,ID)
SELECT EnglishName,ProductCode,ProductName,TerritoryCode,TerritoryName,Salesvalue,CreditValue,NetSalesValue,Sales,Bonus,Bioxellbricks,BioxellTerritories,GETDATE(),ID from [exceltablename]

此处Overseas是您的数据库表,exceltablename是您的excel源表。