[英]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.