更新 1:一种存储持续时间的新方法——以秒为单位存储所有内容,而不是三个单独的列分别存储小时、分钟和秒。Access'double
类型允许我们以地质时代的规模存储持续时间。
脚步:
- 将电子表格导入持续时间的 Access 表中,例如
tblDurations
.
- 对持续时间执行算术运算,例如将两行(其中的相应列)相加,将一行乘以 2,对所有行求和等。
- 格式化并显示输出。
下面,我将主要使用通过 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
,我将其作为练习留给读者。