【问题标题】:Import Excel Spread Sheet into Access - Format Issue with [h]:mm:ss将 Excel 电子表格导入 Access - [hh]:mm:ss 的格式问题
【发布时间】:2013-08-20 11:37:41
【问题描述】:

我需要将 Excel 电子表格导入 Microsoft Access。我有一个格式为 [h]:mm:ss 的列。当我使用 Access 导入它时,我已将列指定为日期/时间格式,但它显示不正确。

例如,在 Excel 中会显示 452:32:00,但在 Access 中会显示 18/01/1900 20:32:00。我需要在 Access 中编写一个查询,以便以与 Excel 中相同的格式显示它。

如果有人可以向我展示执行此操作的 SQL,我将不胜感激。谢谢

【问题讨论】:

  • 您是否尝试将其导入为文本而不是日期/时间? (除非您希望数据类型为日期/时间。)
  • 我需要将该值乘以 Access 中另一列的值。我无法以文本格式执行此操作,但我不希望问题过于复杂。
  • 没关系。我不确定 Access 是否可以具有这种格式,但让我们拭目以待,看看是否有人有什么魔术:)
  • 是否可以先进行乘法运算(例如简单地乘以 2),然后从导入的日期/时间中获取总小时、分钟、秒(在我的示例中为 452、32、0)并以小时:分钟:秒形式的文本显示?
  • 我不确定我是否理解你的意思......:s

标签: sql excel ms-access


【解决方案1】:

更新 1: 一种存储持续时间的新方法 - 以秒为单位存储所有内容,而不是三个单独的列分别存储小时、分钟和秒。访问'double 类型允许我们以地质年龄的规模存储持续时间。

步骤:

  1. 将电子表格导入持续时间的 Access 表中,例如tblDurations
  2. 对持续时间执行算术运算,例如将两行(对应的列)相加,将一行乘以 2,对所有行求和,等等。
  3. 格式化并显示输出。

下面,我将主要使用 Access 的 ANSI-92 SQL 语法,它通过 DAO CurrentProject.Connection.Execute 方法工作。您必须在此处使用 DAO 以获得最佳结果,而不是使用 Access GUI 查询编辑器。如果您需要对此进行任何澄清,请告诉我。

导入电子表格

创建表

create table tblDurations (
  ID autoincrement primary key
, durSeconds double not null
)

导入持续时间

我喜欢从简单的 CSV 文件导入数据。我将在这里向您展示这种方法。假设您有一个 CSV 文件 durations.csv 在 Excel 中看起来像这样:

Duration
01:59:59
02:01:57
00:00:04

您可以运行以下命令来导入它:

insert into tblDurations (durSeconds)
select
  hour(Duration) * 60 * 60
+ minute(Duration) * 60
+ second(Duration)
from [Text;FMT=CSVDelimited;HDR=Yes;DATABASE=C:\Users\YourName\Documents;].[durations.csv]

请注意,在上面的最后一行中,您将替换为您自己的文件路径和名称。

持续时间的算术

现在您可以切换到 Access 的 GUI SQL 编辑器。假设我们想将某个持续时间乘以 2.5:

select
  2.5 as multiplier
, multiplier * durSeconds as s
from tblDurations
where ID = 1

格式化和显示输出

这里的技巧是以秒表示的持续时间转换为小时、分钟和秒:

select
  int(sq.s / (60 * 60)) as Hours
, int((sq.s - Hours * 60 * 60) / 60) as Minutes
, sq.s - Hours * 60 * 60 - Minutes * 60 as Seconds
from (
  select
    2.5 as multiplier
  , multiplier * durSeconds as s
  from tblDurations
  where ID = 1
) as sq

最后,您将输出的小时、分钟和秒格式化为hh:mm:ss,我将其留给读者作为练习。

【讨论】:

  • 感谢这帮了大忙。欣赏您所涉足的深度。
  • @nfplee 不用担心——事实上我意识到在几秒钟内存储所有内容更容易——见上文!
猜你喜欢
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多