从 CSV 文件导入 dd/mm/yyy 或 mm/dd/yyy 格式的 Access 日期

问题描述 投票:0回答:1

我正在将数据从 CSV 文件导入到 Access 表中,并将它们与从第二个 CSV 文件导入到第二个 Access 表中的数据进行比较。

这一切在本月下旬都很完美。然而,在这个月的上半月,我得到了不同的结果。每月 13 日之前的数据导入为 mm/dd/yyyy,而在此日期之后,数据导入为 dd/mm/yyyy。

例如,1 月 20 日,日期在 csv 文件中显示为 2016-01-20,导入时为 20/01/2016,而在 1 月 6 日,日期在 csv 文件中显示为 2016-01-06,导入到 access 中时它将作为 06/01/2016 导入到一个表中,但将 01/06/2016 导入到另一个表中。

两个表位于同一数据库中并且配置相同。还有其他人遇到过这个问题吗?更重要的是你能解决它吗?

csv import ms-access-2010 date-format
1个回答
2
投票

无论您的默认国际设置是什么,日期始终是默认的,并且在 Access SQL 中被视为 MM/DD/YYYY。如果您看到日期为 DD/MM,这是因为 Access 知道您的系统区域设置是 DD/MM 并向您显示类似的日期,但它不会在 SQL 指令中执行此操作。 对于美国来说没有问题。对于欧盟和世界其他地区来说,存在很多问题。 当 Access 插入日期时,它始终认为它是美国格式 MM/DD,如果不是,则应正确设置日期格式。没关系。但是,当它找到不可能使用 MM/DD 格式的日期(月份大于 12)时,它会理解该日期不是 MM/DD 而是 DD/MM,并自行进行转换!微软的这种“策略”一点也不聪明,而且会带来很多问题。最好让所有日期都不正确或抛出错误,这样您就可以直接修补,而不是让一半日期正确而另一半错误,有时在几个月后才注意到。

解决方案:

当您在表中手动插入日期时,您应该执行 format(thedate,"MM/DD/YYYY") 或使用 YYYY/MM/DD 格式,该格式始终被识别并隐式转换

从文本/CSV 文件导入时,应指定日期格式为 DMY。 您可以在导入向导的第 3 步或第 4 步中使用底部的“高级”按钮来执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.