【发布时间】:2014-08-22 23:09:36
【问题描述】:
我有一个 TABLE 列:USER_ID,TIMESTAMP 和 ACTION
每一行都告诉我哪个用户在某个时间戳执行了什么操作。
示例:
- Alice 于 2014-06-12 16:37:46 开始申请
- Alice 于 2014-06-12 17:48:55 停止申请
我想要一个用户列表,其中包含他们启动应用程序的第一行和他们关闭应用程序的最后一行之间的时间差。
这是我的尝试:
SELECT USER_ID,DATEDIFF(
(SELECT timestamp FROM MOBILE_LOG WHERE ACTION="START_APP" AND USER_ID="Alice" order by TIMESTAMP LIMIT 1),
(SELECT timestamp FROM MOBILE_LOG WHERE ACTION ="CLOSE_APP" AND USER_ID="Alice" order by TIMESTAMP LIMIT 1)
) AS Duration FROM MOBILE_LOG AS t WHERE USER_ID="Alice";
我要求两个 SELECT 查询之间的 DATEDIFF,但我只得到一个 Alice 的列表,其中 -2 作为 Duration。
我走对了吗?
【问题讨论】:
-
您希望如何查看差异?在毫秒或几小时内你有一个面具(提供它,比如:`YYYY-MM-DD HH:MI:SS`)?
-
一个面具会很棒! DD HH:MM(40 天 3 小时 4 分钟)