Excel使用MSQuery将时间格式更改为datetime

时间:2016-01-12 11:42:42

标签: mysql excel time ms-query

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

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

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

1 个答案:

答案 0 :(得分:0)

好的,这里有几个例子。 &#39;初学者&#39;总是提供0:00(如上所述)和'Ende&#39;还有&#39;暂停&#39;总是等于一起。所以我们必须考虑使用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

  5. 我没有尝试过PowerQuery,因为到目前为止我还不知道它,我不知道它是否在Excel或MS中。我不想为每个用户在PC上安装额外的工具。如果我只需将它放入我的Excel表中,那么如果功能正确,它可以是一个解决方案。

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

    已添加:为了更清晰,我在Excel中添加了截图:
    screenshot of Excel

    • 我从SQL中获得的列A格式为h:mm。
    • B列的数字格式相同。
    • D2和E2是A1:A10的和,格式为h:mm [h]:mm:ss。
    • D3和E3是A1:A23的和,格式为h:mm [h]:mm:ss。
      正如你可以看到SQL delievers时间5:30:00通过MSQuery和Excel显示我14.01.2016 05:30:00,我可以以正确的方式格式化(A列)。建立总和是可能的(看D2),只要它小于24小时,否则我只得到大于一整天的小时数(<24)。你可以在D3和E3中看到这个原因 我能做些什么来获得正确的价值观?我想最简单的方法就是从MSQuery获取数据。