我有一个列timestam的表,它存储了这种格式的时间戳:“2012-12-10 21:24:30”
我正在寻找一个SQL查询,该查询采用当前时间戳并使用列中的时间戳减去它,并以这种格式给出差异:
“3小时2分钟剩余时间”
寻找执行该操作的MySQL查询。
答案 0 :(得分:31)
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
输出如下
“timetaken”列将显示答案。