Oracle 数据库中的 VBA ADODB DATE 字段类型

Posted

技术标签:

【中文标题】Oracle 数据库中的 VBA ADODB DATE 字段类型【英文标题】:VBA ADODB DATE field type from Oracle database 【发布时间】:2015-02-17 13:01:53 【问题描述】:

我有一个将 Excel 连接到 Oracle DB 并运行 SQL 查询的 VBA/ADODB 代码。问题是 Excel 中的记录集将 Oracle DATE 字段显示为 adDBTimeStamp (135),即使在 Oracle 中它们存储为简单日期。基本上我只想将 DD.MM.YYYY 部分导入 Excel。是否可以在将记录集中的 ADODB 字段类型导入 Excel 之前更改它?我知道我可以在导入后使用 VBA 更改格式,但我不想这样做。

代码如下:

query = "SELECT NAME,DATE1,DATE2,DATE3 from MY_TABLE"
rs.Open query, Con
Sheets("data_source").Range("A2").CopyFromRecordset rs
Con.Close

【问题讨论】:

我认为将 Excel 列的格式更改为简单的日期可能会更容易,不是吗? 但是你不能在 COUNTIFS 公式中使用它(这是我需要的),除非你用 VBA 改变格式 是的,用 VBA 宏更改它。迭代列并以所需格式构建日期的快速子将是一个好的开始。 【参考方案1】:

请注意,Oracle DATE 类型将日期和时间存储到秒。如果您只想获取数据的日期部分,只需在查询中使用 trunc 函数:

query = "SELECT NAME,trunc(DATE1),trunc(DATE2),trunc(DATE3) from MY_TABLE"

【讨论】:

以上是关于Oracle 数据库中的 VBA ADODB DATE 字段类型的主要内容,如果未能解决你的问题,请参考以下文章

vba adodb读取文本文件

excel vba 调用ADODB 问题?

VBA ADODB 查询返回 -1

共享模块VBA之间的adodb连接

关于如何在 Oracle 数据库中使用 VBA 执行 SQL 脚本的建议

Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选