我有一个名为ending
的时间戳字段。我想计算从现在到现在的时间。
这是我正在尝试但结果只是说blob
select item_id, CONCAT(
FLOOR(HOUR(TIMEDIFF(now(), ending)) / 24), ' days, ',
MOD(HOUR(TIMEDIFF(now(), ending)), 24), ' hours, ',
MINUTE(TIMEDIFF(now(), ending)), ' minutes')
AS TimeDiff from items where item_id=39
或者我应该使用PHP代替?它们都在页面上广泛使用......我正在假设我已经在进行查询,然后将其包含在内,这比其他PHP调用更有效 - 但是,我可能是错的!
更新我为此做了一个fiddle并且它运行正常,那么为什么MySQL Workbench中的结果会说blob
?
这是表格解释:
item_id int(11) NO PRI auto_increment
user_id int(11) YES
title varchar(128) YES
price decimal(10,2) YES
category int(11) YES
cat_parent int(11) YES
description varchar(1024) YES
item_condition int(11) YES
delivery varchar(45) YES
ending timestamp YES
postcode varchar(12) YES
latitude float(10,6) YES
longitude float(10,6) YES
dateadded timestamp YES CURRENT_TIMESTAMP
答案 0 :(得分:0)
将SELECT放在查询的开头?
SELECT CONCAT(
FLOOR(HOUR(TIMEDIFF(now(), '2012-08-02 11:20')) / 24), ' days, ',
MOD(HOUR(TIMEDIFF('2012-08-05 09:56', '2012-08-02 11:20')), 24), ' hours, ',
MINUTE(TIMEDIFF('2012-08-05 09:56', '2012-08-02 11:20')), ' minutes, ',
SECOND(TIMEDIFF('2012-08-05 09:56', '2012-08-02 11:20')), ' seconds')
AS TimeDiff
返回 34天,22小时,36分钟,0秒
答案 1 :(得分:0)
您也可以使用此查询 -
SELECT
CONCAT(
TIMESTAMPDIFF(DAY, ending, NOW()), ' days ',
TIME_FORMAT(TIMEDIFF(TIME(NOW()), TIME(ending)), '%k hours %i minutes')
) TimeDiff
FROM items;
关于BLOB类型 - 由于CONCAT函数中使用的数据类型值不同,为避免这种情况,请使用CAST或CONVERT函数,例如: -
SELECT
CAST(
CONCAT(
TIMESTAMPDIFF(DAY, ending, NOW()), ' days ',
TIME_FORMAT(TIMEDIFF(TIME(NOW()), TIME(ending)), '%k hours %i minutes')
) AS CHAR
)
TimeDiff
FROM items;