mysql更新列如增量

时间:2018-12-03 08:57:44

标签: mysql sql

我想以以下方式用total_playtime(时间戳)和另一个值更新playtime(时间戳)。

total_playtime = total_playtime + playtime

我使用了以下代码,

UPDATE `user_data` SET `total_playtime`=total_playtime+playtime WHERE id=1

但是此代码仅在

时有效,

>>if second + second, works only when the result is no more than 1 minute. 
for example 
00:00:05 + 00:00:10 = 00:00:15 //WORKS
00:00:30 + 00:00:50 = 00:00:00 //DIDNT WORK , it should be 00:01:20

>>if minute + minute, works only when the result is no more than 1 hour
for example 
00:05:00 + 00:10:00 = 00:15:00 //WORKS
00:30:00 + 00:50:00 = 00:00:00 //DIDNT WORK , it should be 01:20:00

也就是说,如果结果是从秒到分钟或从分钟到小时的转换,则结果为00:00:00。

我非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

您的total_playtimeplaytime的类型不应为timestamp

您应该使用decimalint来记录秒数。

timestamp表示一个时间点。您需要的是持续时间。 decimalint有效,然后您可以(通过程序设置)持续时间的格式以向用户显示“ 00:02:30”。

如果您使用的是MySQL,则timestamp根本无法使用。

  

TIMESTAMP数据类型用于包含日期和时间部分的值。 TIMESTAMP的UTC范围是'1970-01-01 00:00:01'到UTC的范围是'2038-01-19 03:14:07'。

ps:某些数据库提供time类型,可用于存储您的播放时间,并且您可以使用addtime()total_time = time + interval xxx来计算总时间。

答案 1 :(得分:0)

这将起作用:

SELECT ADDTIME('00:00:50', '00:00:15');

输出:

00:01:05

输入:

SELECT ADDTIME('00:50:00', '00:30:00');

输出:

01:20:00

对于两个时间戳,您需要执行以下操作:

SELECT ADDTIME(TIME('2008-05-15 13:20:32'),Time('0001-01-01 1:39:27'))