你们中有人能在这里找出mySQL update语句的语法错误吗?
update table_name set start_time = DATE_ADD (start_time , INTERVAL 2 DAY) where start_time = '2020-12-08 10:47:00';
以上是简单的mySQL查询,将start_time (时间戳)更新2天。
AFAIK,上面应该工作,它没有什么复杂的。但是我得到了语法错误,我无法理解为什么会出现语法错误。这是我的错误..。
数据库错误代码: 1064。消息:您的SQL语法出现了错误;请检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在第10行使用start_time = '2020-12-08 10:47:00‘。
我也尝试过其他的变体,比如.
update table_name set start_time = adddate (start_time , INTERVAL 2 DAY) where start_time = '2020-12-08 10:47:00';
update table_name set start_time = date_sub (start_time , INTERVAL -2 DAY) where start_time = '2020-12-08 10:47:00';数据库错误代码: 1064。消息:您的SQL语法出现了错误;请检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在第3行使用start_time = '2020-12-08 10:47:00 ')。
如果在select语句中使用date_sub,
select * from table_name where start_time > DATE_SUB(now() , INTERVAL 2 DAY);它确实很有魅力。但是我不能在set =.的update语句中使用它。
我只是无法理解哪里出了问题,我很想知道语法到底出了什么问题。你能提个建议吗?
发布于 2020-12-10 19:18:32
问题似乎是函数名和开头括号之间的空格。
这是:
DATE_ADD (start_time , INTERVAL 2 DAY)应写明:
DATE_ADD(start_time , INTERVAL 2 DAY)在使用DATE_SUB()的示例中没有发生这种情况,因为前面的空间不存在。
并非所有的MySQL函数都有这样的限制。这与MySQL解析器处理函数名(即在文档中描述 )的方式有关。
函数调用在名称和括号之间不带空格的要求只适用于有特殊考虑的内置函数。
DATE_ADD()和DATE_SUB()被列为受影响的函数。您可以使用IGNORE_SPACE来更改默认行为。
总的来说,我建议使用这样的日期算法,因此您不需要担心这样的警告(而且它还可以提高代码的可读性):
start_time + INTERVAL 2 dayhttps://stackoverflow.com/questions/65240733
复制相似问题