在access数据库中插入带时间的日期c#
insert date with time in access database c#
在访问中我只得到日期5/12/2015
但没有时间,我需要这样的东西
5/12/2015 4:56 PM
保存在access数据库
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBDate);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
您应该使用 OleDbType.DBTimeStamp
枚举,它映射到 DateTime
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate; cmd.Parameters.Add(clickdate);
有关详细信息,请参阅 this documentation。
看看the MSDN description of OleDbType:
DBDate: Date data in the format yyyymmdd (DBTYPE_DBDATE). This maps to DateTime.
如您所见,DBDate
不包含时间部分。我建议改用 Date
:
Date: Date data, stored as a double (DBTYPE_DATE). The whole portion is the number of days since December 30, 1899, and the fractional portion is a fraction of a day. This maps to DateTime.
根据以下 Microsoft 知识库文章,这是用于 Access Date/Time 字段的正确类型。
引自INFO: OleDbType Enumeration vs. Microsoft Access Data Types:
Access Type Name Database Data Type OLE DB Type .NET Framework Type Member Name
...
Date/Time DateTime DBTYPE_DATE System.DateTime OleDbType.Date
...
Whosebug 真的应该 add support for tables...
PS:注意是OLEDB does not like Milliseconds in Date/Time fields。如果您遇到 标准表达式中的数据类型不匹配 错误,请删除毫秒数:
dtm = New DateTime(dtm.Year, dtm.Month, dtm.Day, dtm.Hour, dtm.Minute, dtm.Second)
尝试 OleDbType.DBTimeStamp
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
原因:这也存储时间分数,如 here 所述。
在访问中我只得到日期5/12/2015
但没有时间,我需要这样的东西
5/12/2015 4:56 PM
保存在access数据库
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBDate);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
您应该使用 OleDbType.DBTimeStamp
枚举,它映射到 DateTime
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate; cmd.Parameters.Add(clickdate);
有关详细信息,请参阅 this documentation。
看看the MSDN description of OleDbType:
DBDate: Date data in the format yyyymmdd (DBTYPE_DBDATE). This maps to DateTime.
如您所见,DBDate
不包含时间部分。我建议改用 Date
:
Date: Date data, stored as a double (DBTYPE_DATE). The whole portion is the number of days since December 30, 1899, and the fractional portion is a fraction of a day. This maps to DateTime.
根据以下 Microsoft 知识库文章,这是用于 Access Date/Time 字段的正确类型。
引自INFO: OleDbType Enumeration vs. Microsoft Access Data Types:
Access Type Name Database Data Type OLE DB Type .NET Framework Type Member Name
...
Date/Time DateTime DBTYPE_DATE System.DateTime OleDbType.Date
...
Whosebug 真的应该 add support for tables...
PS:注意是OLEDB does not like Milliseconds in Date/Time fields。如果您遇到 标准表达式中的数据类型不匹配 错误,请删除毫秒数:
dtm = New DateTime(dtm.Year, dtm.Month, dtm.Day, dtm.Hour, dtm.Minute, dtm.Second)
尝试 OleDbType.DBTimeStamp
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
原因:这也存储时间分数,如 here 所述。