我有一个表,其中有一列“timestam”,它以“2012-12-10 21:24:30”这种格式存储时间戳。
我正在寻找一种SQL查询,该查询将当前时间戳减去列中的时间戳,并以以下格式显示差异:
“剩余3小时2分钟”
寻找一个可以实现此功能的MySQL查询。
使用TIMESTAMPDIFF
函数。
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
其中的unit参数应为以下值之一: MICROSECOND(微秒)、SECOND(秒)、MINUTE(分钟)、HOUR(小时)、DAY(天)、WEEK(周)、MONTH(月)、QUARTER(季度)或YEAR(年)。
我的方法:将unit设置为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')
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
UNIX_TIMESTAMP()
,但我认为UNIX_TIMESTAMP(now()) === CURRENT_TIMESTAMP()
。 - xkeshavUNIX_TIMESTAMP(now()): 1441912971 ... UNIX_TIMESTAMP(): 1441912971 ... CURRENT_TIMESTAMP(): 2015-09-10 12:22:51 ... NOW(): 2015-09-10 12:22:51
- Rick James
WHERE TIMESTAMPDIFF(...) < 48
中。 - xkeshav