gpt4 book ai didi

c# - 尝试将 DateTime.Now 插入日期/时间字段会出现 "Data type mismatch"错误

转载 作者:可可西里 更新时间:2023-11-01 08:17:21 25 4
gpt4 key购买 nike

如果我尝试以简单的方式将日期时间写入 MS-Access 数据库中的记录,就像这样

cmd.CommandText = "INSERT INTO [table] ([date]) VALUES (?)";
cmd.Parameters.AddWithValue("?", DateTime.Now);

我收到一条异常消息“标准表达式中的数据类型不匹配。”

谁能告诉我为什么?这里出了什么问题?

经过一些实验,我发现如果我写的话我可以让它工作

OleDbParameter parm = new OleDbParameter("?", OleDbType.Date);
parm.Value = DateTime.Now;
cmd.Parameters.Add(parm);

但这样做似乎不那么简洁、不那么直截了当。为什么这是必要的?我是否忽略了一些简单的事情?

最佳答案

条件表达式不匹配的问题是由于在调用 AddWithValue 时分配给用于表示 DateTime.Now 值的参数的 OleDbType。

AddWithValue 选择的 OleDbType 是 DBTimeStamp,但 Access 需要 OleDbType.Date

http://support.microsoft.com/kb/320435

在 NET 上搜索我发现了另一个有趣的提示。核心问题在于OleDbParameter 无法处理DateTime.Now 的毫秒部分。可能强制 OleDbType 为 Date,省略了毫秒部分。我还发现,如果我们从日期中删除毫秒数,则插入也适用于 DBTimeStamp 类型。

cmd.Parameters.AddWithValue("?", GetDateWithoutMilliseconds(DateTime.Now));

private DateTime GetDateWithoutMilliseconds(DateTime d)
{
return new DateTime(d.Year, d.Month, d.Day, d.Hour, d.Minute, d.Second);
}

哦,好吧,等待更好地解释这一点的人。

关于c# - 尝试将 DateTime.Now 插入日期/时间字段会出现 "Data type mismatch"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com