在MySQL中如何计算时间?
在MySQL中如何计算时间?,mysql,Mysql,正如您在图中所看到的,我有一份停机报告,显示选定工厂在选定日期的停机时间。现在,我想添加“时间持续时间”列中的所有值,并将其显示在“总时间持续时间”附近的单独显示器中。例如,在图中,所选日期为2015年3月17日和2015年3月30日,所选工厂为生料工厂。该报告显示了所选13天内生料磨机的停机时间。我想将这13天的所有时间添加到“时间持续时间”列中,并在“总时间持续时间”附近的单独显示屏中显示。时间格式为HH:MM:SS。我该怎么做 步骤: mysql> SELECT CAST(SUM(t
正如您在图中所看到的,我有一份停机报告,显示选定工厂在选定日期的停机时间。现在,我想添加
“时间持续时间”
列中的所有值,并将其显示在“总时间持续时间”
附近的单独显示器中。例如,在图中,所选日期为2015年3月17日和2015年3月30日,所选工厂为生料工厂。该报告显示了所选13天内生料磨机的停机时间。我想将这13天的所有时间添加到“时间持续时间”
列中,并在“总时间持续时间”
附近的单独显示屏中显示。时间格式为HH:MM:SS。我该怎么做 步骤:
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
持续时间
值持续时间
值相加时间
,它只不过是总持续时间
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
步骤:
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
持续时间
值持续时间
值相加时间
,它只不过是总持续时间
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
步骤:
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
持续时间
值持续时间
值相加时间
,它只不过是总持续时间
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
步骤:
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
持续时间
值持续时间
值相加时间
,它只不过是总持续时间
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>
使用以下查询:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration))) FROM TableName AS 'TOTAL TIME DURATION';
但是,有时总持续时间可能超过允许的最大时间值,即“838:59:59”。因此,您通常可以使用以下查询来计算溢出总和:
SELECT CONCAT_WS(' hours and ',
((SUM(TIME_TO_SEC(Time_Duration)) DIV (TIME_TO_SEC('838:59:59')+1))*839),
(SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration)) MOD (TIME_TO_SEC('838:59:59')+1)))
)
FROM TableName AS 'TOTAL TIME DURATION'
这将以以下形式提供输出:
3 hours and 3:45:05
您还可以使用以下自定义查询以所需的精确格式获取结果,例如6:45:05
:
SELECT CONCAT_WS(
':',
(SUM(TIME_TO_SEC(Time_Duration)) DIV 3600,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) DIV 60,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) MOD 60)
FROM TableName AS 'TOTAL TIME DURATION';
使用以下查询:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration))) FROM TableName AS 'TOTAL TIME DURATION';
但是,有时总持续时间可能超过允许的最大时间值,即“838:59:59”。因此,您通常可以使用以下查询来计算溢出总和:
SELECT CONCAT_WS(' hours and ',
((SUM(TIME_TO_SEC(Time_Duration)) DIV (TIME_TO_SEC('838:59:59')+1))*839),
(SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration)) MOD (TIME_TO_SEC('838:59:59')+1)))
)
FROM TableName AS 'TOTAL TIME DURATION'
这将以以下形式提供输出:
3 hours and 3:45:05
您还可以使用以下自定义查询以所需的精确格式获取结果,例如6:45:05
:
SELECT CONCAT_WS(
':',
(SUM(TIME_TO_SEC(Time_Duration)) DIV 3600,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) DIV 60,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) MOD 60)
FROM TableName AS 'TOTAL TIME DURATION';
使用以下查询:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration))) FROM TableName AS 'TOTAL TIME DURATION';
但是,有时总持续时间可能超过允许的最大时间值,即“838:59:59”。因此,您通常可以使用以下查询来计算溢出总和:
SELECT CONCAT_WS(' hours and ',
((SUM(TIME_TO_SEC(Time_Duration)) DIV (TIME_TO_SEC('838:59:59')+1))*839),
(SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration)) MOD (TIME_TO_SEC('838:59:59')+1)))
)
FROM TableName AS 'TOTAL TIME DURATION'
这将以以下形式提供输出:
3 hours and 3:45:05
您还可以使用以下自定义查询以所需的精确格式获取结果,例如6:45:05
:
SELECT CONCAT_WS(
':',
(SUM(TIME_TO_SEC(Time_Duration)) DIV 3600,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) DIV 60,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) MOD 60)
FROM TableName AS 'TOTAL TIME DURATION';
使用以下查询:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration))) FROM TableName AS 'TOTAL TIME DURATION';
但是,有时总持续时间可能超过允许的最大时间值,即“838:59:59”。因此,您通常可以使用以下查询来计算溢出总和:
SELECT CONCAT_WS(' hours and ',
((SUM(TIME_TO_SEC(Time_Duration)) DIV (TIME_TO_SEC('838:59:59')+1))*839),
(SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration)) MOD (TIME_TO_SEC('838:59:59')+1)))
)
FROM TableName AS 'TOTAL TIME DURATION'
这将以以下形式提供输出:
3 hours and 3:45:05
您还可以使用以下自定义查询以所需的精确格式获取结果,例如6:45:05
:
SELECT CONCAT_WS(
':',
(SUM(TIME_TO_SEC(Time_Duration)) DIV 3600,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) DIV 60,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) MOD 60)
FROM TableName AS 'TOTAL TIME DURATION';
没用。即使日期改变,它也显示相同的值“838:59:59”。我使用了它。MySQL查询浏览器获取了10000多行,几乎所有行都显示为0小时和00:00:00,而有些行显示为-->0小时和00:00:12或任何介于0和59之间的值,以代替12请再次检查,我已重新更新。我忘记了第二个查询中所有值的总和。它显示“31小时和657:16:23”。这意味着什么?它不能仅仅是657小时,因为表中有10000多个值..不起作用。即使日期改变,它也显示相同的值“838:59:59”。我使用了它。MySQL查询浏览器获取了10000多行,几乎所有行都显示为0小时和00:00:00,而有些行显示为-->0小时和00:00:12或任何介于0和59之间的值,以代替12请再次检查,我已重新更新。我忘记了第二个查询中所有值的总和。它显示“31小时和657:16:23”。这意味着什么?它不能仅仅是657小时,因为表中有10000多个值..不起作用。即使日期改变,它也显示相同的值“838:59:59”。我使用了它。MySQL查询浏览器获取了10000多行,几乎所有行都显示为0小时和00:00:00,而有些行显示为-->0小时和00:00:12或任何介于0和59之间的值,以代替12请再次检查,我已重新更新。我忘记了第二个查询中所有值的总和。它显示“31小时和657:16:23”。这意味着什么?它不能仅仅是657小时,因为表中有10000多个值..不起作用。即使日期改变,它也显示相同的值“838:59:59”。我使用了它。MySQL查询浏览器获取了10000多行,几乎所有行都显示为0小时和00:00:00,而有些行显示为-->0小时和00:00:12或任何介于0和59之间的值,以代替12请再次检查,我已重新更新。我忘记了第二个查询中所有值的总和。它显示“31小时和657:16:23”。这意味着什么?它不可能只有657小时,因为表中有10000多个值..我不能这样添加。因为日期更改时,值会不断更改changed@Ram:无论输入日期是否更改,您的脚本语言应该使用
日期范围结果的输出
对持续时间进行求和
以填充UI中的总持续时间
框。@Ram:仅适用于介于19
总持续时间s之间的日期