如何在mysql查询中获取时间?

时间:2015-02-16 12:56:15

标签: mysql

如何在mysql查询中获取时间?。假设我们有一个datetime列,因此输出应该是这样的。

30秒前

在15分钟前 在3小时前 在2天前 在3个月前 在125年前

这可以通过使用php实现,但如果我们在mysql查询中执行,那将是完美的解决方案。

1 个答案:

答案 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天。