- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的恒温器有一张 table 。它记录数据如下。所以当它打开时,我得到一个时间状态,状态 1 表示打开,状态 0 表示加热关闭。此外,每次开/关时,它都会为我提供每天的总供暖量。
Date | Status | Total_heatings
2019-01-20 10:00:00 | 1 | 1
2019-01-20 10:10:00 | 0 | 1
2019-01-20 14:00:00 | 1 | 2
2019-01-20 14:25:00 | 0 | 2
2019-01-20 18:00:00 | 1 | 3
2019-01-20 18:15:00 | 0 | 3
2019-01-21 01:00:00 | 1 | 1
2019-01-21 01:30:00 | 0 | 1
2019-01-21 06:00:00 | 1 | 2
2019-01-21 06:15:00 | 0 | 2
我正在尝试按天计算总持续时间。我尝试了下面的脚本,它为我提供了每天多次加热的持续时间。当我使用 SUM(TIMESTAMPDIFF(Minute,Min(Date),MAX(Date)))
时,由于分组使用错误而引发错误。
SELECT
DATE_FORMAT(Date, '%d.%m') AS 'day',
TIMESTAMPDIFF(MINUTE,MIN(Date),MAX(Date)) AS 'Duration'
FROM thermostat
WHERE (Date BETWEEN '2019-01-21 00:00:00' + INTERVAL -7 DAY AND '2019-01-21 00:00:00')
GROUP BY DAY(Date),Total_heatings;
我所需要的只是每天获取这些不同供暖时间的总和。所以结果应该是这样的:
Day | Duration
20.01 | 50
21.01 | 45
现在我无法进一步总结每天的所有供暖时间,例如每天的总持续时间。非常感谢您的指点和帮助。
最佳答案
此查询适用于 8.0 之前的 MySQL 版本。它使用 SELF JOIN
为给定的 heater on
行查找匹配的 heater off
行。在不存在匹配行的情况下,它会使用当天的结束时间或当前时间,以较低者为准。
SELECT DATE_FORMAT(t1.Date, '%d.%m') AS `day`,
SUM(TIMESTAMPDIFF(MINUTE, t1.Date, COALESCE(t2.Date, LEAST(NOW(), DATE(t1.Date) + INTERVAL 1 DAY)))) AS Duration,
MAX(t1.Total_heatings) AS Total_heatings
FROM thermostat t1
LEFT JOIN thermostat t2 ON t2.Status = 0 AND t2.Total_heatings = t1.Total_heatings AND DATE(t2.Date) = DATE(t1.Date)
WHERE t1.Status = 1 AND DATE(t1.Date) BETWEEN '2019-01-21' - INTERVAL 7 DAY AND '2019-01-21'
GROUP BY `day`
输出:
day Duration Total_heatings
20.01 50 3
21.01 45 2
关于mysql - 每天多个持续时间的 SUM timestampdiff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54298693/
我正在向 TIMESTAMPDIFF(HOUR,'29-10-2012','19-11-2012') 提供输入,但我得到的输出为 504 但值应为 510。 输出为 510,因为起始值为 29/10/
你有没有可能以分钟为单位计算总和,而不是在某个特定时间之间,比如 2300 到 0700 之间 SELECT SUM( TIMESTAMPDIFF(MINUTE, open_time, close_t
这是一个简单的查询,用于检索用户上次在线的分钟数、小时数或天数。小时和天的计算是正确的。但是几分钟后,以下返回正确的值但为负值,例如-4分钟、-6分钟、-10分钟时应为正值。 select usern
我的 MySQL 查询有一个小问题: 表格是这样的 id timedate user action 1 2010-01-01 10:01:01 AB991 login 2
我有以下表结构: +----+---------------------+---------------------+ | id | created_at | closed
我真的很困惑。无论我将最后一个子句改为,下面的语句都会返回相同的结果 TIMESTAMPDIFF( SECOND , `Regkey`.`expires` , NOW( ) ) > 0 TI
是的,之前已经问过非常类似的问题,但请耐心等待。 现在,人们提出了许多函数来根据出生日期确定准确的年龄,同时考虑闰年等因素。然而MySQL documentation提供了一个非常简单的解决方案: S
我有这个查询来向我展示付款之间的平均时间差异 SELECT TIMESTAMPDIFF(SECOND, MIN(x.ts), MAX(x.ts) )/(COUNT(DISTINCT(x.ts)) -1
我有一个学生数据库,其中有注册日期列。我需要在 sql 上运行一个查询,查找该日期和今天的日期,并显示 yy 年 mm 月的差异。 我正在使用 TIMESTAMPDIFF 来计算这些日期之间的差异,但
为什么 TIMESTAMPDIFF(MONTH, '2015-12-25', '2016-02-24') 给我1?我希望 2016-01-25 为 1。 我的猜测是,它实际上返回了大约 1.999 个
我在sql fiddle上使用mysql版本5.6,并且我尝试使用timestampdiff()函数来查找名为Task的表中第一列中的最小值和第二列中的最大值之间的差异正在关注 select Time
我正在尝试在我的一个查询中使用 TIMESTAMPDIFF 函数,这让我很头疼。 表格 id | web_address | timeperiod | timeperiod_exp 1
简单的问题 更改输出以使其仅显示最后两位小数的最佳方法是什么? SELECT AVG(TIMESTAMPDIFF(hour, start_it,start_qa) 这样“13.2500”的输出将显示为
我可以使用以下方法获取从数据库时间到 UTC (0) 的时区偏移量: SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW()); 我如何获得从 UTC 到特
我的查询有问题,即使我现在发布帖子,TIMESTAMPDIFF不适用于 MINUTE 。但是,如果我输入 DAY 或 MONTH,它会起作用,我真的无法弄清楚可能是什么问题。我有比秒更新的帖子。请提供
SELECT M.strMemID AS 'Member ID', M.strMemLastname
我正在使用以下语法 TIMESTAMPDIFF(2, CHAR(CREATED - TIMESTAMP('1970-01-01 00:00:00')) 哪里CREATED类型为 TIMESTAMP数据
我的 SQL 查询仅在答案方面是正确的,但在格式方面却失败了。例如,小时和分钟的转换值为 4 小时 30 分钟...如果我将它与“:”(冒号是小时和分钟的正常分隔符)连接起来,它只会显示为“43”而不
我的恒温器有一张 table 。它记录数据如下。所以当它打开时,我得到一个时间状态,状态 1 表示打开,状态 0 表示加热关闭。此外,每次开/关时,它都会为我提供每天的总供暖量。 Date
我正在使用 14.4 版本的 mysql,我正在尝试执行以下查询: SELECT TIMESTAMPDIFF(MINUTE, MINUTE(NOW()), NOW()) 这应该返回当前小时的时间戳,但
我是一名优秀的程序员,十分优秀!