首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL添加时间戳值

MySQL添加时间戳值
EN

Stack Overflow用户
提问于 2011-05-20 01:00:54
回答 1查看 407关注 0票数 1

我在MySQL中有一个表,格式如下:(time =插入时的时间戳)

代码语言:javascript
复制
id |    tid |   uid |   time
31 |    1   |   14  |   2011-05-19 05:42:37   //start timestamp)
41 |    1   |   14  |   2011-05-19 07:18:42   //stop timestamp)
45 |    1   |   14  |   2011-05-19 07:18:49   //start timestamp)
46 |    1   |   14  |   2011-05-19 07:28:42   //stop timestamp)

我需要做的是做一个选择,添加像这样的时间差

(41 - 31) + (46 - 45) (为了更好地理解我需要做什么,我使用id而不是实际的time值)

SELECT (something that does this) AS TotalTimeSpent WHERE tid = '1'这样的东西

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 01:24:15

如果您坚持使用这种表布局(我真的希望您改变主意,这真的很可怕),那么您可以在存储过程中使用游标。

伪代码是这样的:

代码语言:javascript
复制
CREATE PROCEDURE gettotaltime()
BEGIN
  DECLARE total, curr, prev DATETIME;
  DECLARE odd INT DEFAULT 1;
  DECLARE done INT DEFAULT 0;

  DECLARE c CURSOR FOR SELECT time FROM tbl;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  OPEN c;

  read_loop: LOOP
    FETCH c INTO curr;

    IF odd=0 THEN 
      SET total=dateadd(total,datediff(curr,prev));   -- or something similar, I forget
    END IF;

    SET prev=curr;
    SET odd=1-odd;

    IF done THEN
      LEAVE read_loop;
    END IF;
  END LOOP;

  CLOSE c;

  SELECT total;
END;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6062180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档