2

背景:我忙于一项研究,其中我接收存储在 oracle 数据库中的数据。我自己使用 Access 数据库来存储来自 oracle 数据库的数据(以及来自其他来源的数据,与这个问题无关)

来自 oracle 数据库的数据以访问格式提供给我。然后我运行以下查询来检索“oracle 数据”并将(或更新,如果该行已经存在)插入到我自己的访问数据库中。

oracle 数据库导出以文本格式保存它的日期,我自己的数据库中有日期格式,所以我使用 VBA 函数将文本转换为日期。


我的问题:如果字符串转换为日期,我可以加入字符串和日期吗?我应该如何进行?

UPDATE [TABLE1] INNER JOIN [URI_to_oracle_export.mdb].[TABLE2] 
ON ([TABLE1].PT=[TABLE2].PT) 
AND  ([TABLE1].DCMDATE=toDateFunction([TABLE2].DCMDATE)) 
AND ([TABLE1].CPEVENT=[TABLE2].CPEVENT) SET ...the rest of the SQL..

我的 toDate 函数:

Function toDateFunction(input As String)

toDateFunction= CDate(Right(input , 2) & "/" & Mid(input , 5, 2) & "/" & Left(input , 4))

End Function
4

1 回答 1

0

因此,根据您的转换函数,您收到的 Oracle 文本格式似乎是YYYYMMDD,在这种情况下,对于使用类型转换进行连接,我更愿意反过来工作并将我的访问值转换为文本,例如:

WHERE OracleTable.Date = Format(AccessTable.Date, "YYYYMMDD")

或者

INNER JOIN OracleTable ON OracleTable.Date = Format(AccessTable.Date, "YYYYMMDD")

如果您愿意,您仍然可以反向执行并将您的 Oracle 值转换为日期,这更像是:

WHERE DateSerial(Left(OT.Date,4),Mid(OT.Date,5,2),Right(OT.Date,2)) = AT.Date

从字面上构建您的日期值时,我更喜欢使用 DateSerial 到 CDate

于 2013-06-13T14:31:40.010 回答