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

时间:2016-04-25 13:30:54

标签: mysql sql datetime

在其他人中,我的表中有三列:

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字段只保留为零。

出了什么问题?需要什么引号,括号?我也尝试将中间字段设为时间戳类型,但没有结果。

3 个答案:

答案 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()函数而不是添加。

例如,如果durationduration,那么您可以使用以下任意一项:

1 WEEK