【问题标题】:insert date with time in access database c#在访问数据库c#中插入日期和时间
【发布时间】:2015-05-13 14:21:23
【问题描述】:

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

【问题讨论】:

  • Label3.Text = DateTime.Now.ToString();这给了我日期+时间,但是由于某种原因在访问中不起作用,也许我必须在访问数据库中进行某些操作在访问格式中我有“一般日期”

标签: c# asp.net oledb


【解决方案1】:

看看the MSDN description of OleDbType:

DBDate:格式为 yyyymmdd (DBTYPE_DBDATE) 的日期数据。这映射到 DateTime。

如您所见,DBDate 不包含时间组件。我建议改用Date

日期:日期数据,存储为双精度 (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。如果您收到 Data type mismatch in criteria expression 错误,请删除毫秒:

dtm = New DateTime(dtm.Year, dtm.Month, dtm.Day, dtm.Hour, dtm.Minute, dtm.Second)

【讨论】:

    【解决方案2】:

    您应该使用OleDbType.DBTimeStamp 枚举,它映射到DateTime

    DateTime dtclickdate = DateTime.Now;
    OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
    clickdate.Value = dtclickdate; cmd.Parameters.Add(clickdate);
    

    更多信息请参见this documentation

    【讨论】:

      【解决方案3】:

      试试OleDbType.DBTimeStamp

      DateTime dtclickdate = DateTime.Now;
      OleDbParameter clickdate = new OleDbParameter("@clickdate ", OleDbType.DBTimeStamp);
      clickdate.Value = dtclickdate; 
      cmd.Parameters.Add(clickdate);
      

      原因:这也存储了时间分数,如 here 所述。

      【讨论】:

      • 获取此异常详细信息:System.Data.OleDb.OleDbException:标准表达式中的数据类型不匹配,我试图找出原因
      • 只是一个猜测:你能试试吗:clickdate.Value = dtclickdate.ToString();
      • @Yan:那是因为 Access 不喜欢毫秒。先删除它们:dtm = New DateTime(dtm.Year, dtm.Month, dtm.Day, dtm.Hour, dtm.Minute, dtm.Second)
      • 你是天才 =D @Heinzi DateTime dtclickdate;日期时间 dtm=日期时间。现在; dtm = new DateTime(dtm.Year, dtm.Month, dtm.Day, dtm.Hour, dtm.Minute, dtm.Second); dtclickdate = dtm;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      相关资源
      最近更新 更多