MySQL时间戳差异

时间:2012-12-11 04:30:39

标签: mysql timestamp

我有一个列timestam的表,它存储了这种格式的时间戳:“2012-12-10 21:24:30”

我正在寻找一个SQL查询,该查询采用当前时间戳并使用列中的时间戳减去它,并以这种格式给出差异:

“3小时2分钟剩余时间”

寻找执行该操作的MySQL查询。

2 个答案:

答案 0 :(得分:31)

使用TIMESTAMPDIFF

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
  

其中unit参数,应该是以下值之一:   MICROSECOND(微秒),秒,分钟,小时,星期,星期,月,   季度或年份。

我的方法:将单位设为 SECOND ,然后使用 SEC_TO_TIME

SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND,`table`.`time_column`,CURRENT_TIMESTAMP()))

// will return in hh:mm:ii format

更新

如果HourDifference少于48小时,则返回?否则

SELECT IF(TIMESTAMPDIFF(HOUR,`time_column`,CURRENT_TIMESTAMP())< 48  ,'yes','no')

答案 1 :(得分:3)

假设您的表名是'testtable'

表创建查询在下面给出

CREATE TABLE `testtable` (
    `id` INT(2) NOT NULL AUTO_INCREMENT,
    `period` TIMESTAMP NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)

插入一些数据来测试我的查询。下面给出了插入一些数据的查询

INSERT INTO `testtable` (`id`, `period`) VALUES
    (1, '2012-12-10 17:21:09'),
    (2, '2012-11-06 18:21:12'),
    (3, '2012-12-06 18:21:18'),
    (4, '2012-12-06 19:21:24'),
    (5, '2012-12-06 18:21:27');

现在执行以下查询以获得答案

SELECT *, 
       CONCAT(HOUR(difftime), ' hours ', MINUTE(difftime), ' Minutes ', 
       SECOND(difftime), ' seconds remaining') AS timetaken 
FROM   (SELECT *, 
               SEC_TO_TIME(UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP( 
               ttable.period)) AS 
                      diffTime 
        FROM   testtable ttable) AS temptable1 

输出如下

enter image description here

“timetaken”列将显示答案。