当我将Excel中的日期格式(dd/mm/yyyy)导入到MS Access中时,它显示为非日期值。

3
当我将日期格式(dd/mm/yyyy)的Excel文件导入Access时,它显示的是非日期值,这是什么问题。
例如:27/3/2012变成了33765,其中33765是一个非日期值。

你是如何导入的?使用向导,还是使用TransferSpreadsheet? - Fionnuala
@Remou 我正在使用访问向导通过单击外部数据进行导入。 - Anish
2个回答

1

Access默认认为来自Excel的日期是美国日期格式(mm/dd/yyyy),而不是欧洲日期格式(dd/mm/yyyy)。

您看到的数字是Excel存储日期的方式。(自1990年1月1日以来的每一天都加1)。 当日期是欧洲格式时,在导入期间,Access无法识别它们为日期,并可能加载它们的原始序列日期编号。

此外,请确保这些日期导入到的Access列设置为“日期”。我想您可能已经这样做了,但我还是想确认一下。


实际上问题在于当我转换日期时,它显示数值38443。 - Anish
1
尝试将您的Excel日期格式更改为dd/mm/yyyy,以查看Access是否正确导入它。 - danielpiestrak

1

原因是因为在 MS Office 中,所有日期实际上都是数值,例如您提供的日期 27/03/2012 相当于 40995。

使用导入向导创建新表时,Access 将自动读取其真实数值并设置列类型。

幸运的是,修复很容易,打开表的设计视图,将相关列更改为日期格式并保存表格,这样应该可以正确显示所有值。

或者,设置一个空白表格,将列已设置为日期数据类型,然后将电子表格导入现有表格中。


这让我想知道为什么?数字33765应该是1992年6月10日。 - datatoo
这是因为Windows支持的第一个日期值是1900年1月1日,它的值为1,然后每整天基本上加1,这就是为什么今天(2012年12月7日)是自1900年1月1日以来的第41102天 ^_^ - Matt Donnan
我理解了。我的意思是,给出的例子是2012年3月27日到33765,如所提到的,应该是40995而不是33765,因为那是1992年。 - datatoo
@datatoo 哦,我现在明白了,我决定忽略它并发布为40995。对我来说也是个谜。 - Matt Donnan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接