使用表达式在MySQL和C#中设置datetime字段的异常

时间:2013-05-22 16:19:06

标签: 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=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1$$

这是SQL语句。

  

更新feeds设置feedsdelta = @ 0,feedsnext = @ 1,feeds。{{1} } = @ 2 WHERE id = 19 LIMIT 1

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

  

(2013-05-22 11:58:57 + INTERVAL 15 MINUTE)

这会产生以下错误。

  

MySql.Data.MySqlClient.MySqlException(0x80004005):日期时间值不正确:'(2013-05-22 11:58:57 + INTERVAL 15 MINUTE)'第1行第'列'

我已尝试将日期时间用引号括起来,但这没有帮助。

这是我在@1中执行SQL命令的方法。

C#

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

如果datetime参数来自c#,您应该只使用

DateTime.AddMinutes(<yourdateTimeParameter>, 15);