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

Posted

技术标签:

【中文标题】在访问数据库c#中插入日期和时间【英文标题】:insert date with time in access database 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();这给了我日期+时间,但是由于某种原因在访问中不起作用,也许我必须在访问数据库中进行某些操作在访问格式中我有“一般日期” 【参考方案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
    ...

*** 真的应该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;

以上是关于在访问数据库c#中插入日期和时间的主要内容,如果未能解决你的问题,请参考以下文章

将日期时间从 C# 插入到 SqlSrv

C# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()

使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量

当日期为空时,在访问中的日期列中插入空值

如何以某种格式将日期和时间插入 SQL Server 数据库? [复制]

C# 后台如何向SQL数据库中插入一定时间范围内的随机日期值,到日就可以!!