首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个简单的MySQL语法有什么问题?总结日期

这个简单的MySQL语法有什么问题?总结日期
EN

Stack Overflow用户
提问于 2016-04-25 13:30:54
回答 3查看 54关注 0票数 0

在其他人中,我的桌子上有三列:

start- 时间戳,默认值为CURRENT_TIMESTAMP

duration- datetime,通常是0000-00-07 00:00:00 (一周)

end -时间戳,默认值为0000-00-00 00:00:00

我要做的是:

代码语言:javascript
复制
UPDATE `banners` SET `end` = `start` + `duration` WHERE `id` = 93

没有出现错误,id是准确的-但是操作没有执行,end字段只是停留在零。

怎么了?有什么引号需要括号吗?我还尝试将中间字段设置为时间戳类型,但没有结果。

EN

回答 3

Stack Overflow用户

发布于 2016-04-25 13:55:25

很有可能,只是在代码方面有点难看.

代码语言:javascript
复制
UPDATE `banners`
SET `end` = FROM_UNIXTIME(UNIX_TIMESTAMP(`start`) + (UNIX_TIMESTAMP(`duration`) - UNIX_TIMESTAMP('1970-01-01 00:00:00')),'%Y-%d-%m %h:%i')
WHERE `id` = 93

...you只需将所有内容转换为秒,从第二次添加持续时间,然后转换回用于设置:)的日期时间字符串:)

票数 1
EN

Stack Overflow用户

发布于 2016-04-25 13:37:16

如果持续时间通常为1周,则可以使用DATE_ADD()函数MySql。

代码语言:javascript
复制
DATE_ADD(start,INTERVAL 7 DAY)

希望这有帮助

票数 0
EN

Stack Overflow用户

发布于 2016-04-25 13:41:49

不能以添加数字的方式添加DATETIME值。April 25, 2016添加到January 5, 2016的含义是什么?

您应该使用最小的时间单位来存储您的duration,该单位可以用来表示它们为整数,并使用MySQL DATE_ADD()函数代替加法。

例如,如果duration1 WEEK,那么您可以使用以下任何一个:

代码语言:javascript
复制
UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 1 WEEK) WHERE `id` = 93

UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 7 DAY) WHERE `id` = 93

UPDATE `banners` SET `end` = DATE_ADD(`start`, INTERVAL 168 HOUR) WHERE `id` = 93
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36842067

复制
相关文章

相似问题

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