gpt4 book ai didi

ms-access - Access 数据转换问题

转载 作者:行者123 更新时间:2023-12-04 06:50:51 24 4
gpt4 key购买 nike

我正在使用 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") 查询数据,也会发生同样的事情。

任何想法为什么会这样?我是否必须将月份和年份分开并再次合并?

谢谢

最佳答案

Access/Jet/ACE(以及许多其他 Windows 组件)使用一个窗口来解释 2 位数年份。对于 00 到 29,假定为 2000-2029,对于 30-99,假定为 1930-1999。这是为了在 1997-98 年的某个时间解决 Y2K 兼容性问题。

我不允许在我的任何应用程序中的任何地方输入 2 位数年份。因此,我不需要任何代码来解释用户的意图(这可能会出错)。

这也指出了显示格式和数据存储与 Jet/ACE 日期值的独立性问题。存储为 double 数,整数部分表示自 1899 年 12 月 30 日以来的日期,小数部分表示一天内的时间部分。您输入的任何日期都将仅存储为一个数字。

如果您输入的日期不完整(即没有明确指明年份的世纪),您的应用程序必须假设用户的意图。 2029 窗口是 2 位数年份问题的一种解决方案,但在我看来,依赖它是完全不合适的,因为用户可以在其控制面板区域设置中更改它。我没有编写任何复杂的代码来验证日期,我只需要输入 4 位数字年份并完全避免这个问题。我从 c 开始就这样做了。 1998是理所当然的,大家已经完全习惯了。一些用户当时尖叫起来,我以“这是因为 Y2K”作为关闭他们的借口。一旦他们使用了它,它就变得不成问题了。

关于ms-access - Access 数据转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3164851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com