我正在尝试使用下面的代码在Datatable Datetime列中存储当前日期的当前日期
dtRow["dCurrantDate"] = DateTime.Now;
但出现此错误:
值类型与列类型不匹配无法存储 dCurrantDate列中的<2019-04-18 12:32:11 PM>预期类型为 日期时间。
答案 0 :(得分:2)
解决方案在错误消息中。 C#DateTime
等效于SQL datetime
或datetime2
。检查SQL表中的类型,并在必要时将其设置为以下两种日期类型之一。
如果您在这里查看smalldatetime的定义,它将以不同的方式存储时间。如果需要时间,则需要除去小时和分钟以外的所有内容,否则请仅使用日期。在.Date
之后添加Now
。
答案 1 :(得分:2)
根据显示的错误,数据库中列的数据类型与输入不匹配(如果列类型为datetime,则未存储AM或PM,则使用datetime2类型)
答案 2 :(得分:1)
尝试一下
public void MakeDataTable(){
DataTable myTable;
DataRow myNewRow;
// Create a new DataTable.
myTable = new DataTable("My Table");
//ADDING DATETIME COLUMN
DataColumn colDateTime = new DataColumn("DateTimeCol");
colDateTime.DataType = System.Type.GetType("System.DateTime");
myTable.Columns.Add(colDateTime);
//ADDING ROW TO DATA-Table
myNewRow = myTable.NewRow();
myNewRow["DateTimeCol"] = System.DateTime.Now;
myTable.Rows.Add(myNewRow);
}
答案 3 :(得分:1)
基本上,将添加一个DateTime列,如下所示,请与您的代码进行交叉检查
DataTable dt = new DataTable();
DataColumn dc = new DataColumn();
dc.ColumnName = "dCurrantDate";
dc.DataType = typeof(DateTime);
dt.Columns.Add(dc);
DataRow dr = dt.NewRow();
dr["dCurrantDate"] =DateTime.Now;
dt.Rows.Add(dr);`
答案 4 :(得分:0)
double cell = Convert.ToDouble(dataTable.Rows [rowCount] [columnCount]);
DateTime matchDate = DateTime.FromOADate(cell);
这是最简单的解决方案。