如何在将数据插入 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();

结果是

在此处输入图像描述那么解决方案是什么?

GETDATE()设置为"海外"表的"日期"列的默认约束。

用于添加约束的 SQL 命令:

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

发布此内容后,插入时无需向此列传递任何值。只需插入其余列,这将自动插入。

试试这个:

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 源表。

你可以简单地使用 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")

自定义日期和时间格式字符串

希望这对你有用..谢谢

有一个

函数 GETDATE(( 用于此目的。

以日期时间值的形式返回当前数据库系统时间戳 没有数据库时区偏移量。此值派生自 SQL Server 实例所在的计算机的操作系统 正在运行。

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

最新更新