在访问数据库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# 中的日期时间与 SQL Server 中的 SQL 和 GETDATE()
使用 java 和 sql INSERT Query 在 MS 访问中插入字符串类型变量和日期类型变量