我正在使用 Access 2003。有一个表,其中文本数据列中包含一些日期值,如下所示;
May-97
Jun-99
Jun-00
Sep-02
Jan-04
我需要将它们转换为正确的日期格式并转换为另一个日期/时间列,因此创建一个新的日期/时间列并将文本列中的值更新到这个新列中。起初看起来不错,除了 2000 年之后的年份。新列按如下方式转换日期;
May-97 > 01/05/1997
Jun-99 > 01/06/1999
Jun-00 > 01/06/2000
Sep-02 > 01/09/2010
Jan-04 > 01/01/2010
正如您所看到的,2000 年之后的任何数据都会转换为 2010 年。如果我使用 FORMAT(dateString, "dd/mm/yyyy") 查询数据,也会发生同样的情况。
有什么想法为什么会这样吗?我是否必须将月份和年份分开并再次合并?
Thanks
Access/Jet/ACE(以及许多其他 Windows 组件)使用窗口来解释 2 位数年份。对于 00 到 29,假定为 2000-2029,对于 30-99,假定为 1930-1999。这是为了解决 1997-98 年期间的 Y2K 兼容性问题而制定的。
我不允许在我的任何应用程序中的任何位置输入两位数的年份。因此,我不需要任何代码来解释用户的意图(这可能会出错)。
这也指出了显示格式和数据存储与 Jet/ACE 日期值的独立性问题。存储为双精度型,整数部分表示自 1899 年 12 月 30 日以来的日期,小数部分表示一天中的时间部分。您输入的任何日期都将仅存储为一个数字。
如果您输入不完整的日期(即没有明确指示该年份的世纪),您的应用程序必须假设用户的意图。 2029 窗口是解决 2 位数年份问题的一种解决方案,但在我看来,依赖它是完全不合适的,因为用户可以在控制面板区域设置中更改它。我不编写任何复杂的代码来验证日期,我只需要 4 位数的年份输入并完全避免这个问题。我从c开始就这样做了。 1998年是理所当然的,大家都已经完全习惯了。当时有一些用户抱怨,我以“这是因为千年虫”为借口关闭了他们。一旦他们使用了它,它就不再是问题了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)