Подтвердить что ты не робот

Отличие временной отметки MySQL

У меня есть таблица с timestam столбца, которая хранит временную метку с этим форматом: "2012-12-10 21:24:30"

Я ищу SQL-запрос, который принимает текущую временную метку и вычитает ее с той, что находится в столбце, и дает разницу в этом формате:

"Осталось 3 часа и 2 минуты"

Ищете запрос MySQL, который делает это.

4b9b3361

Ответ 1

использовать TIMESTAMPDIFF

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

где аргумент unit, который должен быть одним из следующих значений: MICROSECOND (микросекунды), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, КВАРТАЛ ИЛИ ГОД.

мой подход: установите 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')

Ответ 2

Предположим, что ваше имя таблицы "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" будет отображаться ответ.