2

I need to import an Excel spread sheet into Microsoft Access. I have a column which is in the format [h]:mm:ss. When I import it with Access I have specified the column to be in Date/Time format but it displays incorrectly.

For example in Excel it would show 452:32:00 but in Access it would show 18/01/1900 20:32:00. I need to write a query in Access to display this in the same format it is shown in Excel.

I'd appreciate if someone could show me the SQL to do this. Thanks

4

1 回答 1

1

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

脚步:

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

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

导入电子表格

创建表

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

导入持续时间

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

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,我将其作为练习留给读者。

于 2013-08-18T20:57:44.523 回答