【问题标题】:Sort table by difference of datetimes of rows with same name按同名行的日期时间差异对表进行排序
【发布时间】:2013-11-03 01:32:46
【问题描述】:

我有这个 MySQL 表:

ID: int, 主键 用户名:varchar 访问时间:日期时间

每当用户登录时,都会在一行中写入他的用户名和当前时间。 现在,我想按用户最后一次访问时间和第一次访问时间之间的时间对用户进行排序。

所以,对于一张桌子:

Petr, 12:00
Petr, 14:00
Martin, 15:00
Petr, 16:00
Martin, 16:00

结果是

Petr, 4:00 (because 16-12=4)
Martin, 1:00 (16-15)

是否可以形成一个 SQL 查询来执行此操作?

我正在考虑按日期时间对表格进行排序,然后按名称分组(这应该给我给出最早日期的行,然后按日期时间降序排序和分组,这会给我最新日期,然后加入这两个结果, 并对其进行排序。但是我不知道超出基础的 SQL 语法,所以我无法使其工作。

【问题讨论】:

  • 选择用户名,max(accesstime) - min(accesstime) group by username order by max(accesstime) - min(accesstime)
  • 是的,我想我没有仔细搜索。刚刚发现这个:stackoverflow.com/questions/8914306/…

标签: mysql sql datetime


【解决方案1】:
SELECT username,HOUR(TIMEDIFF(MAX(AccessTime),MIN(AccessTime))) timedifference FROM table
GROUP BY username ORDER BY timedifference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2019-03-12
    • 1970-01-01
    相关资源
    最近更新 更多