如何在mysql查询中获取时间?。假设我们有一个datetime列,因此输出应该是这样的。
30秒前在15分钟前 在3小时前 在2天前 在3个月前 在125年前
这可以通过使用php实现,但如果我们在mysql查询中执行,那将是完美的解决方案。
答案 0 :(得分:2)
让我们假设您的表中的日期列名为datecol
SELECT *, @sec=TIME_TO_SEC(TIMEDIFF(NOW(), datecol)),
CASE
WHEN @sec < 60 THEN CONCAT(@sec," seconds ago")
WHEN @sec >= 60 AND @sec < 3600 THEN CONCAT(FLOOR(@sec/60)," minutes ago")
WHEN @sec >= 3600 AND @sec < 86400 THEN CONCAT(FLOOR(@sec/86400)," hours ago")
WHEN @sec >= 86400 AND @sec < 2592000 THEN CONCAT(FLOOR(@sec/2592000)," days ago")
WHEN @sec >=2592000 AND @sec < 946080000 THEN CONCAT(FLOOR(@sec/946080000)," years ago")
END AS elapsed
FROM table
然而,它可能有点不准确,因为有些月份没有30天,有些年份没有365天。