Отличие временной отметки MySQL
У меня есть таблица с timestam столбца, которая хранит временную метку с этим форматом: "2012-12-10 21:24:30"
Я ищу SQL-запрос, который принимает текущую временную метку и вычитает ее с той, что находится в столбце, и дает разницу в этом формате:
"Осталось 3 часа и 2 минуты"
Ищете запрос MySQL, который делает это.
Ответы
Ответ 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" будет отображаться ответ.