在其他人中,我的表中有三列:
start
- 时间戳,默认值为CURRENT_TIMESTAMP
duration
- 日期时间,通常是0000-00-07 00:00:00
(一周)
end
- 时间戳,默认值为0000-00-00 00:00:00
这就是我的所作所为:
UPDATE `banners` SET `end` = `start` + `duration` WHERE `id` = 93
没有错误显示,id
是准确的 - 但操作无法执行,end
字段只保留为零。
出了什么问题?需要什么引号,括号?我也尝试将中间字段设为时间戳类型,但没有结果。
答案 0 :(得分:1)
很可能,在代码方面有点难看......
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
...你只需将所有内容转换为秒,从第二个添加持续时间,然后转换回日期时间字符串进行设置:)
答案 1 :(得分:0)
如果持续时间通常为1周,则可以使用MySql的DATE_ADD()
功能
DATE_ADD(start,INTERVAL 7 DAY)
希望有所帮助
答案 2 :(得分:0)
您无法像添加数字一样添加recognized as incomplete type
值。 DATETIME
添加到April 25, 2016
的含义是什么?
您应该使用可用于将它们表示为整数的最小时间单位来存储January 5, 2016
,并使用MySQL DATE_ADD()
函数而不是添加。
例如,如果duration
为duration
,那么您可以使用以下任意一项:
1 WEEK