0

我用 Excel 制作了一个 MSQuery 以从 MySql 中的表中获取一些字段,这些字段工作正常,但是在 MySQL 中有一个列具有时间格式,而 Excel 以日期时间格式为我提供了这一点。我可以在 Excel 中格式化单元格,以便它以 hh:mm 格式显示时间,这不是问题,但我必须使用数据库中的这些字段在 Excel 中进行一些计算,这导致了我的问题:我不能当总和大于 24 小时时,对这些字段求和,因为这样我只得到小时的值,而不是天数乘以 24(例如,我只得到 1:15 而不是 25:15)。通常我使用这种格式 [hh]:mm 所以会显示所有值(甚至超过 24 小时),但这在这里不起作用,因为我得到一个非常高的值(例如:1017144:15)。这样做的原因是,Excel 为每个字段添加到今天的实际日期的时间(例如 12:00 将是 12.01.2016 12:00),并且对于总和中的每个时间,日期的值将被额外添加。我在 MSQuery 中使用以下语句进行了尝试:

SELECT
   DATE_FORMAT(entry.timeBegin, '%h:%i') AS 'Beginn',
   entry.timeEnd AS 'Ende',
   TIME(entry.pause) AS 'Pause'
FROM timetable.entry entry<br>

MySQL 数据库中的所有 3 列都具有 hh:mm 格式。Ende 和 Pause 的行为如上所述,并且 Beginn 以正确的方式格式化(只是没有通过 Excel 格式化字段),但字段的内容具有字符串类型,因此,Excel 在计算时总是对这些字段使用 0(零)他们,所以我总是得到 0 作为总和。我知道我可以在 MySQL 中构建总和,但这对我来说不是解决方案,因为用户可以在 Excel 中设置一些过滤器,这在查询中构建起来很复杂,尤其是这只是更困难的构造的一部分。

4

1 回答 1

0

好的,这里有几个例子。“Beginn”总是提供 0:00(如上所述),“Ende”和“Pause”总是相等的。所以我们必须考虑使用 hh:mm 和 [hh]:mm 格式的 Ende 或 Pause:

  1. 0:00 导致 0:00 / 1017144:00
  2. 1:30 导致 1:30 / 1017145:30
  3. 20:00 + 3:00 导致 23:00 / 2034311:00
  4. 21:30 + 3:00 导致 0:30 / 2034312:30


我没有尝试 PowerQuery,因为我直到现在才知道它,我不知道它是在 Excel 中还是在 MS 中。我不想为每个用户在 PC 上安装额外的工具。如果我只需要将它放入我的 Excel 表格中,那么如果它功能正确,它可能是一个解决方案。

补充:我关注过PowerQuery,发现这会给我带来问题,因为大多数用户使用MS Office 2010,而Excel 2010的要求是Microsoft Office 2010 Professional Plus mit Software Assurance,而我们公司不提供Software Assurance功能。

补充:为了更清楚,我添加了 Excel 的
屏幕截图:Excel的屏幕截图

  • 我从 SQL 中获取以 h:mm 格式显示的 A 列。
  • B 列仅在数字格式中相同。
  • D2 和 E2 是来自 A1:A10 的总和,格式分别为 h:mm [h]:mm:ss。
  • D3 和​​ E3 是来自 A1:A23 的总和,格式分别为 h:mm [h]:mm:ss。
    如您所见,SQL 通过 MSQuery 传递时间 5:30:00,Excel 向我显示 14.01.2016 05:30:00,我可以以正确的方式格式化(A 列)。只要小于 24 小时,就可以建立总和(看 D2),否则我只能得到大于一整天的小时数(< 24)。您可以在 D3 和 E3 中看到其原因。
    我该怎么做才能获得正确的价值观?我想最简单的方法是从 MSQuery 获取数据。
于 2016-01-12T15:30:30.673 回答