Sql Microsoft Access 2010日期转换

Sql Microsoft Access 2010日期转换,sql,date,ms-access,Sql,Date,Ms Access,我没有太多的经验,所以我为一个潜在的愚蠢问题提前道歉。我没有创建这些表,也没有创建过去使用过的查询。话虽如此-- 在过去的几个月里,我一直在使用一个日期转换查询来将列从整数更新为日期。它过去工作得很好,我发誓我最近提取的数据都是一样的,但在某个时候,日期开始变得不稳定。例如,典型的日期列可能如下所示: 58222 58158 59076 58103 转换查询如下所示: IIf([D_posting]<>0,[D_posting]-18261,0) 这显然是错误的。这种情况让我想起

我没有太多的经验,所以我为一个潜在的愚蠢问题提前道歉。我没有创建这些表,也没有创建过去使用过的查询。话虽如此--

在过去的几个月里,我一直在使用一个日期转换查询来将列从整数更新为日期。它过去工作得很好,我发誓我最近提取的数据都是一样的,但在某个时候,日期开始变得不稳定。例如,典型的日期列可能如下所示:

58222
58158
59076
58103
转换查询如下所示:

IIf([D_posting]<>0,[D_posting]-18261,0)
这显然是错误的。这种情况让我想起了我们如何记得我们在C++中生成随机数(这是很久以前)了,但是对于我来说,我不知道如何在没有参考点的情况下逆向设计正确的减法因子。
我还尝试使用CDate()函数来代替,它还导致了一系列未来的日期,这让我怀疑是否还有其他错误。我为一个小的医师小组工作,所以它可能是电子健康记录软件中的某个东西,但我想知道我应该检查什么,以确保我没有做任何事情。

您可以创建一个查询,使用“cdate”功能(见下文)返回日期。您可以修改代码,使其减去偏移量(可能是18261?)

在VBA的即时窗口中,您可以修改以下内容:

“cdate”将获取一个数字并将其转换为一个日期:

?cdate(41925)
2014年10月13日

“cdbl”将采用日期并转换为数字

?CDbl(Date())

41926

如果您的数据包含“58222”之类的值,那么将来一定会有日期方式,或者有人正在玩带有偏移量的游戏。值“41925”等于2014年10月13日。[D_posting]是什么类型的字段?实际上,假设偏移量为18261,则58222转换为5/28/2009。你发布的日期是在转换之后还是之前?Wayne,你能告诉我转换为日期的公式是什么吗?我到处都找不到。我可以查看以前的数据提取,然后修改公式,直到新的符合旧的。我发布的日期是在转换之后。我发布了一个带有函数的答案。如果您发布的日期基于表格值,您是否减去了偏移量?如果你已经这样做了,那么可能有人弄乱了你的数据?我尝试了cdate([D_Posting]-18261)和cdate([D_ServiceFrom]-18261),结果是:第二列有时是20年后,有时是9年后,这难道不奇怪吗?这两列实际上应该匹配,或者至少应该合理地靠近。我不介意对不同的列使用不同的偏移量,但考虑到有时是20年,有时是9年(在一个列内),这一切都会被抛在脑后。积垢。一些不可靠的事情肯定正在发生。我讨厌成为坏消息的传递者。。。如果手动转换第一行,则相差20年!最后一排是~9年差。积垢。谢谢你的帮助。
?CDbl(Date())