在其他人中,我的桌子上有三列:
start- 时间戳,默认值为CURRENT_TIMESTAMP。
duration- datetime,通常是0000-00-07 00:00:00 (一周)
end -时间戳,默认值为0000-00-00 00:00:00。
我要做的是:
UPDATE `banners` SET `end` = `start` + `duration` WHERE `id` = 93没有出现错误,id是准确的-但是操作没有执行,end字段只是停留在零。
怎么了?有什么引号需要括号吗?我还尝试将中间字段设置为时间戳类型,但没有结果。
发布于 2016-04-25 13:55:25
很有可能,只是在代码方面有点难看.
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只需将所有内容转换为秒,从第二次添加持续时间,然后转换回用于设置:)的日期时间字符串:)
发布于 2016-04-25 13:37:16
如果持续时间通常为1周,则可以使用DATE_ADD()函数MySql。
DATE_ADD(start,INTERVAL 7 DAY)希望这有帮助
发布于 2016-04-25 13:41:49
不能以添加数字的方式添加DATETIME值。April 25, 2016添加到January 5, 2016的含义是什么?
您应该使用最小的时间单位来存储您的duration,该单位可以用来表示它们为整数,并使用MySQL DATE_ADD()函数代替加法。
例如,如果duration是1 WEEK,那么您可以使用以下任何一个:
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` = 93https://stackoverflow.com/questions/36842067
复制相似问题