Access 2003-VBA-连接两种类型(字符串=日期)

Access 2003-VBA-连接两种类型(字符串=日期),vba,string,date,ms-access,inner-join,Vba,String,Date,Ms Access,Inner Join,背景:我正忙于一项研究,在这项研究中,我收到了存储在oracle数据库中的数据。我自己使用Access数据库存储oracle数据库中的数据(以及其他来源的数据,与此问题无关) oracle数据库中的数据以access格式提供给我。然后,我运行以下查询来检索“oracle数据”,并将其插入(或更新,如果行已被激活)到我自己的access数据库中 oracle数据库导出将其日期保存为文本格式,我自己的数据库中有日期格式,因此我使用VBA函数转换日期中的文本 我的问题:如果字符串转换为日期,我可以加

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

oracle数据库中的数据以access格式提供给我。然后,我运行以下查询来检索“oracle数据”,并将其插入(或更新,如果行已被激活)到我自己的access数据库中

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..
我的toDateFunction:

Function toDateFunction(input As String)

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

End Function

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

WHERE 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

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