在访问数据库中插入日期和时间c#

时间:2015-05-13 14:21:24

标签: c# asp.net oledb

在访问中,我只获得日期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);

3 个答案:

答案 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的说明存储时间分数。