在访问中,我只获得日期5/12/2015
,但没有时间,我需要这样的东西
5/12/2015 4:56 PM
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBDate);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
答案 0 :(得分:1)
您应该使用OleDbType.DBTimeStamp
枚举,该枚举映射到DateTime
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate; cmd.Parameters.Add(clickdate);
有关详细信息,请参阅this documentation。
答案 1 :(得分:1)
查看the MSDN description of OleDbType:
DBDate :格式为yyyymmdd(DBTYPE_DBDATE)的日期数据。这映射到DateTime。
如您所见,DBDate
不包含时间组件。我建议改为使用Date
:
日期:日期数据,存储为double(DBTYPE_DATE)。整个部分是自1899年12月30日以来的天数,小数部分是一天的一小部分。这映射到DateTime。
根据以下Microsoft知识库文章,这是用于访问日期/时间字段的正确类型。
引自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
...
StackOverflow应该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)
答案 2 :(得分:0)
尝试OleDbType.DBTimeStamp
:
DateTime dtclickdate = DateTime.Now;
OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
clickdate.Value = dtclickdate;
cmd.Parameters.Add(clickdate);
原因:这也按照here的说明存储时间分数。