select a.pdt_id, a.end_date - now() as seconds,
b.bid_price, c.uname, c.profile_img
from tbl_products a
left join tbl_auction b on a.pdt_id=b.product_id
left join tbl_members c on b.member_id=c.member_id
where a.pdt_id=183
我已经在javascript的SetTimeOut()方法中调用此查询,每1秒钟一次 它将结果显示为
pdt_id seconds price uname profile_img
183 107959.000000 0.10 xxxxxxx images/profile/no_image.jpg
一切都是正确的,我的问题是,当秒变为183时,它不会显示输出的秒数:
pdt_id price uname profile_img
183 0.10 xxxxxxx images/profile/no_image.jpg
该查询()中的错误是什么?如果有必要,我会提供表格详细信息......
答案 0 :(得分:3)
你不能在这样的日期做数学
a.end_date - now() as seconds
那是你的错误。
这是另一种选择
UNIX_TIMESTAMP(e.end_date) - UNIX_TIMESTAMP() as seconds
unix_timestamp将日期表示为自1970年以来的秒数的整数,这是一个真实数字并且有效。
你的方法有时起作用的原因是因为NOW() - end_date有时是好的数学,但是日期'不是基数为10的数字,所以当你对它们这样处理时最终会得到一个棘手的结果。
答案 1 :(得分:0)
试试这个:
select ..., subdate(a.end_date, now()) as seconds,