Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MySQL和C中使用表达式设置日期时间字段时出现异常#_C#_Mysql_Datetime - Fatal编程技术网

C# 在MySQL和C中使用表达式设置日期时间字段时出现异常#

C# 在MySQL和C中使用表达式设置日期时间字段时出现异常#,c#,mysql,datetime,C#,Mysql,Datetime,我无法在名为feeds的表上执行参数化SQL语句 该表的定义如下: CREATE TABLE `feeds` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `last_changed` datetime DEFAULT NULL, `next` datetime DEFAULT NULL, `delta` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=In

我无法在名为
feeds
的表上执行参数化SQL语句

该表的定义如下:

CREATE TABLE `feeds` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `last_changed` datetime DEFAULT NULL,
  `next` datetime DEFAULT NULL,
  `delta` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1$$
下面是SQL语句

更新
提要
设置
提要
增量=@0,
提要
下一步=@1,
提要
上次更改=@2,其中id=19限制1

当我尝试使用表达式作为值时,错误出现在参数
@1
上。这是价值

(2013-05-22 11:58:57+间隔15分钟)

这将生成以下错误

MySql.Data.MySqlClient.MySqlException(0x80004005):第1行“下一个”列的日期时间值不正确:“(2013-05-22 11:58:57+间隔15分钟)”

我试过用引号写日期时间,但没用

这就是我在
C
中执行SQL命令的方式

ICollection pParameters=。。。。。。
MySqlCommand cmd=新的MySqlCommand(pSql,conn);
cmd.Prepare();
int i=0;
foreach(pParameters中的对象对象)
{
cmd.Parameters.AddWithValue(String.Format(“@{0}”),i.ToString(),obj);
i++;
}
cmd.ExecuteNonQuery();

您只能在参数中输入值,不能在表达式中输入值。尝试将查询更改为:

UPDATE feeds
SET feeds.delta=@0,feeds.next=@1,feeds.last_changed=@2  + INTERVAL 15 MINUTE
WHERE id = 19 LIMIT 1

然后将参数设置为仅日期/时间值-例如
2013-05-22 11:58:57

您只能将值放入参数中,而不能放入表达式中。尝试将查询更改为:

UPDATE feeds
SET feeds.delta=@0,feeds.next=@1,feeds.last_changed=@2  + INTERVAL 15 MINUTE
WHERE id = 19 LIMIT 1

然后将参数设置为仅日期/时间值-例如
2013-05-22 11:58:57

如果日期时间参数来自c#,则应使用

DateTime.AddMinutes(<yourdateTimeParameter>, 15);
DateTime.AddMinutes(,15);

如果datetime参数来自c#,则只需使用

DateTime.AddMinutes(<yourdateTimeParameter>, 15);
DateTime.AddMinutes(,15);

哦,好吧,我不知道这个。那太糟糕了,我必须改变设计来处理表达式。哦,好吧,我不知道这个。这太糟糕了,我必须修改设计来处理表达式。谢谢,我使用表达式是因为在运行时更容易修改单位。@MathewFoscarini为什么?它改变了什么?代码是可配置(分钟、小时、天等)功能的一部分。@MathewFoscarini好吧,这两种解决方案应该几乎相同,但无论如何,如果你找到一个可行的解决方案,不需要改变。好吧,我不认为一个
开关
语句会增加很多工作。谢谢,我使用表达式是因为在运行时更容易更改单位。@MathewFoscarini为什么?它改变了什么?代码是可配置(分钟、小时、天等)功能的一部分。@MathewFoscarini好吧,这两种解决方案应该几乎相同,但无论如何,如果你找到一个可行的解决方案,就不需要改变。好吧,我不认为
switch
语句会增加很多工作。