首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL (Aurora)使用adddate或date-add或date-sub更新时间戳,语法错误。

MySQL (Aurora)使用adddate或date-add或date-sub更新时间戳,语法错误。
EN

Stack Overflow用户
提问于 2020-12-10 19:03:26
回答 1查看 732关注 0票数 0

你们中有人能在这里找出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‘。

我也尝试过其他的变体,比如.

代码语言:javascript
复制
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,

代码语言:javascript
复制
select * from table_name where start_time  > DATE_SUB(now() , INTERVAL 2 DAY);

它确实很有魅力。但是我不能在set =.的update语句中使用它。

我只是无法理解哪里出了问题,我很想知道语法到底出了什么问题。你能提个建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 19:18:32

问题似乎是函数名和开头括号之间的空格。

这是:

代码语言:javascript
复制
DATE_ADD (start_time , INTERVAL 2 DAY)

应写明:

代码语言:javascript
复制
DATE_ADD(start_time , INTERVAL 2 DAY)

在使用DATE_SUB()的示例中没有发生这种情况,因为前面的空间不存在。

并非所有的MySQL函数都有这样的限制。这与MySQL解析器处理函数名(即在文档中描述 )的方式有关。

函数调用在名称和括号之间不带空格的要求只适用于有特殊考虑的内置函数。

DATE_ADD()DATE_SUB()被列为受影响的函数。您可以使用IGNORE_SPACE来更改默认行为。

总的来说,我建议使用这样的日期算法,因此您不需要担心这样的警告(而且它还可以提高代码的可读性):

代码语言:javascript
复制
start_time + INTERVAL 2 day
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65240733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档