【发布时间】:2014-03-14 03:10:05
【问题描述】:
我正在使用 ADO\ACE.OLEDB 查询来访问 Excel 工作表中的数据。此表中的一列是 00:00:00 格式的时间戳。
我对该列的选择最大查询工作正常,但它返回错误的“最大”时间。例如,如果我有以下时间戳:
08:15:00
09:45:00
10:00:00
SELECT MAX 查询将返回 09:45:00,并忽略任何后续时间戳。如果我转到查询表,并使用 text-to-columns 将该列中的所有单元格转换为“时间”,则查询将返回正确的值 10:00:00。
记录在 excel 工作表中的时间戳在一天中经常由许多不同的人使用他们自己的 ADO Update\Insert 查询进行更新,因此我无法打开工作表并将单元格手动转换为正确的类型. update\insert 查询将单元格类型设置为 General。
所以我的问题是这样的。
有没有办法
A) 在 update\insert into ADO 查询中指定数据类型,以便单元格具有正确的数据类型?或者
B) 强制 SELECT MAX 查询将列解释为时间值而不是文本?
如果没有关于如何进行的建议?
编辑:我仔细查看了我正在查询的 excel 表。我注意到每个单元格前面都有一个单引号。我想如果我可以在记录条目时删除它,excel可能会正确格式化单元格作为时间。 以下是 wha 用于将条目写入工作表的基本示例。 更新 [Sheet1$] 设置 StopTime='09:45:00' WHERE Date= '3/12/2014' AND StartTime='9:30:00'
是否可以重写以不包含单引号?注意没有结束引号。
【问题讨论】:
-
我很难看出“09:45:00”如何大于“10:00:00”。是否可能存在未显示的日期组件(例如,“3/12/2014 09:45:00”和“3/10/2014 10:00:00”)?
-
感谢您的回复。似乎没有。时间以文本形式存储在 Excel 工作表中。当我转换为时间时,它会显示正确的序列号。另外,这些都是在同一天制作的,所以它们都是 2014 年 3 月 12 日。