要获取所需的数据,可以使用以下查询: 注:取决于 CURRDATE() 这些例子将失败。你可以用ofc。替换 CURDATE() 具有固定值,如 2018-11-27 ; 说明: 考虑到开/关紧随其后,查询将表与自身连接起来( L.id = R.id -1 ) 查询正在选择任何结果,其中“on”或“off”是 today . 如果 on 是昨天,准时到了 00:00:00 今天: case when L.Time < CURDATE() then CURDATE() else L.Time end as onTime 如果最后一个条目是 on ,关闭时间“修正”为 00:00:00 明天: COALESCE(R.time, CURDATE() + Interval 1 day) (注:您可能需要 NOW() 而不是 CURDATE() + Interval 1 day ,到“现在”为止的当前秒数) 这两种方法用于计算运行秒数。 查询:
SELECT
L.playtime_id AS LID,
R.playtime_id AS RID,
case when L.Time < CURDATE() then CURDATE() else L.Time end as onTime,
COALESCE(R.time, CURDATE() + Interval 1 day) AS offTime,
(
UNIX_TIMESTAMP(COALESCE(R.time, CURDATE() + Interval 1 day)) -
UNIX_TIMESTAMP(case when L.Time < CURDATE() then CURDATE() else L.Time end)
) as RunningSeconds
FROM item0005 as L
LEFT JOIN item0005 AS R
ON L.playtime_id = R.playtime_id -1
WHERE
L.`value` = 1 AND
(
DATE(L.Time) = CURDATE() OR
DATE (R.Time) = CURDATE()
)
;
SELECT VALUE, SUM(TIME_TO_SEC(TIMEDIFF(T2,T1))), 100*SUM(TIME_TO_SEC(TIMEDIFF(T2,T1)))/86400 FROM
(SELECT A.VALUE AS VALUE, COALESCE(B.TIME, TIMESTAMP(CURDATE()-2)) AS T1, A.TIME AS T2
FROM ITEM0005 A
LEFT JOIN ITEM0005 B
ON A.PLAYTIME_ID-1= B.PLAYTIME_ID
WHERE A.VALUE='0'
UNION
SELECT '1' AS VALUE, A.TIME AS T1, COALESCE(B.TIME, TIMESTAMP(CURDATE()-1)) AS T2
FROM ITEM0005 A
LEFT JOIN ITEM0005 B
ON A.PLAYTIME_ID= B.PLAYTIME_ID-1
WHERE A.VALUE='0') C
GROUP BY VALUE;
8条答案
按热度按时间piok6c0g1#
要获取所需的数据,可以使用以下查询:
注:取决于
CURRDATE()
这些例子将失败。你可以用ofc。替换CURDATE()
具有固定值,如2018-11-27
;说明:
考虑到开/关紧随其后,查询将表与自身连接起来(
L.id = R.id -1
)查询正在选择任何结果,其中“on”或“off”是
today
.如果
on
是昨天,准时到了00:00:00
今天:case when L.Time < CURDATE() then CURDATE() else L.Time end as onTime
如果最后一个条目是on
,关闭时间“修正”为00:00:00
明天:COALESCE(R.time, CURDATE() + Interval 1 day)
(注:您可能需要NOW()
而不是CURDATE() + Interval 1 day
,到“现在”为止的当前秒数)这两种方法用于计算运行秒数。
查询:
结果示例:
假设明天00:00:00的示例:http://sqlfiddle.com/#!公元前9/20年14/1
示例使用
NOW()
如果最后一个状态是on
: http://sqlfiddle.com/#!9/3c6227/1号如果您只需要从中获得聚合,您可以使用另一个环境选择,并通过知道一天有86400秒来计算百分比:
http://sqlfiddle.com/#!公元前9/20年14/5
pdtvr36n2#
----+
jq6vz3qz3#
----+
uelo1irk4#
----+
我已经准备好了:http://sqlfiddle.com/#!9/556364a号
谢谢!
3gtaxfhh5#
----+
|值| secondsofday | percentofday|
+-------+
esyap4oy6#
试试这个
vlurs2pr7#
----+
| 0 | 28800 | 33.3 |
| 1 | 57600 | 66.6 |
+-------+
lnvxswe28#
----+