使用:mm:ss将Excel Spread Sheet导入Access – 格式问题

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

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

我会很感激,如果有人可以告诉我这样做的SQL。 谢谢

更新1:存储持续时间的新方法 – 以秒为单位存储所有内容,而不是三小时,分钟和秒的单独列。 访问“ doubletypes允许我们存储地质时代的规模持续时间。

脚步:

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

下面,我将主要使用通过DAO CurrentProject.Connection.Execute方法工作的Access的ANSI-92 SQL语法。 您将不得不使用DAO获得最佳结果,而不是使用Access GUI查询编辑器。 让我知道你是否需要澄清这一点。

导入电子表格

创build表格

 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] 

请注意,在上面的最后一行,您将replace您自己的文件path和名称。

关于持续时间的算术

现在你可以切换到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 ,我将其作为读者的一个练习。