簡體   English   中英

將日期從mm / dd / yyyy轉換為從excel讀取到yyyy / mm / dd,然后再將其發送到數據庫

[英]Converting date from mm/dd/yyyy which is read from excel to yyyy/mm/dd before sending it to database

我正在將Excel工作表導入SQL Server數據庫。 我可以上傳數據,但Excel中有一列包含格式為mm/dd/yyyy的日期。 我希望在將它發送到數據庫之前將其轉換為yyyy/mm/dd

DataTable dt7 = new DataTable();
dt7.Load(dr);
DataRow[] ExcelRows = new DataRow[dt7.Rows.Count];

// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
  bulkCopy.DestinationTableName = "ExcelTable";
  dt7.Rows.CopyTo(ExcelRows, 0);

  for (int i = 0; i < ExcelRows.Length; i++)
  {
    DateTime oldDate =Convert.ToDateTime(ExcelRows[i]["data"]).Date;
    DateTime newDate = Convert.ToDateTime(oldDate).Date;
    ExcelRows[i]["data"] = newDate.ToString("yyyy/MM/dd");
  }
  bulkCopy.WriteToServer(ExcelRows);

錯誤時間:DateTime oldDate = Convert.ToDateTime(ExcelRows [i] [“data”])。日期;
錯誤:無法將對象從DBNull強制轉換為其他類型。

在我看來,它正在讀取錯誤的列或其他東西,因為它說cannot be cast from DBnull Excel工作表有兩列:

id | data (which is date)

我試過用ExcelRows[i]["data"] ExcelRows[i][1]替換ExcelRows[i]["data"] ,但我得到了同樣的錯誤。

這是因為ExcelRows [i] [“data”]返回DBNull。

你應該在發生這種情況時處理它

    if (ExcelRows[i]["data"] == DBNull.Value)
    {
        // Include any actions to perform if there is no date
    }
    else
    {
        DateTime oldDate = Convert.ToDateTime(ExcelRows[i]["data"]).Date;
        DateTime newDate = Convert.ToDateTime(oldDate).Date;
        ExcelRows[i]["data"] = newDate.ToString("yyyy/MM/dd");
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM