我无法在名为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
设置feeds
。delta
= @ 0,feeds
。next
= @ 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#
答案 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);