我需要将Excel电子表格导入Microsoft Access。我有一个格式为[h]:mm:ss的列。当我使用Access导入它时,我已将该列指定为日期/时间格式,但显示不正确。
例如在Excel中它将显示452:32:00但在Access中它将显示18/01/1900 20:32:00。我需要在Access中编写一个查询,以与Excel中显示的格式相同的方式显示它。
如果有人能告诉我这样做的SQL,我会很感激。感谢
答案 0 :(得分:1)
更新1:一种存储持续时间的新方法 - 以秒为单位存储所有内容,而不是三小时,分钟和秒的三个单独列。访问“double
类型允许我们按照地质年龄的比例存储持续时间。
步骤:
tblDurations
。下面,我将主要使用Access的ANSI-92 SQL语法,该语法通过DAO CurrentProject.Connection.Execute
方法工作。您必须在此处使用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
,我将其作为练习留给读者。