2016-09-30 53 views
1

我是新的mysql,已经在时间字段值,我想使用查询更新额外的5分钟时间字段。我尝试了很多东西,但没有工作。如何在mysql中添加额外的5分钟使用查询

这里我的查询:

UPDATE STUDENT SET START_TIME = ADDTIME(START_TIME, 500) WHERE ID = 1; 

上面的查询工作,但一个问题是有没有,如果有23:55:00我的领域。 我希望在执行查询00:00:00后得到结果,但它会在24:00:00更新。

任何人都可以帮助我!

在此先感谢!

+0

什么类型是'START_TIME'列? –

+0

@TimBiegeleisen时间类型 – Abdul

回答

0

这有点棘手,因为你只有时间,并且你想要它在24小时后回零。我的方法是从START_DATE中提取秒数,增加5分钟,然后以24小时为单位将该模式换成零,如果超过一天的秒数。

UPDATE STUDENT 
SET START_TIME = CAST(STR_TO_DATE(CAST(MOD((TIME_TO_SEC(START_TIME) + 300), 86400) AS CHAR(5)), '%s') AS TIME) 
WHERE ID = 1 

在下面的演示中,你可以看到在正确转换23:55:00五分钟内将成为00:00:00行动的逻辑。

SQLFiddle

然而,在你的情况下,最简单的解决方案可能是只使用一个DATETIME而忽略日期部分。然后时间应该自动换到新的一天。

+0

它不能很好地工作 – Abdul

+0

'它不能很好地工作...... ...这不让我帮你 –

0

select addtime('23:55:00','00:06:00');

输出 - 24:01:00(在理想情况下它是正确的,因为时间数据类型仅代表时间,如果将它转换为00:01:00然后时间分量失去24小时,这是错误的)

选择添加时间( '2016-09-01 23:55:00','00:06:00');

输出 - 2016年9月2日00:01:00(在这种情况下,24小时在日期被添加所以时间分量被表示为00:01:00)

如果要求得到它作为00:01:00然后这里是解决方法 -

SELECT TIME((ADDTIME(TIME('23:59:59'),TIME('02:00:00')))%(TIME(' 24:00:00' )));

参考 -

ADDTIME() return 24 hour time

相关问题