OLEDB 错误 ORA-01861
OLEDB error ORA-01861
我正在通过 Qlikview 连接到 pl/sql (oracle),对于同一个脚本,我使用 ODBC 连接并且脚本运行没有问题,但是当我使用 OLEDB 连接时,我收到错误 ORA- 01861:文字与格式字符串不匹配。我的问题主要是为什么我的脚本可以使用 ODBC 连接而不是 OLEDB?
添加代码,因为我想让我的查询与 OLE DB 连接兼容...下面是发生挂断的地方...
SELECT DISTINCT B.CLT_CLT_PGMID,TO_CHAR(B.FIRST_PHONE_CONTACT,'MM/DD/YYYY') AS FIRST_PHONE_CONTACT,
ABS(TO_DATE(B.FIRST_ASSGN_DT, 'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT, 'DD-MM-YYYY')) AS FIRST_Contacted_By_Phone_Days
FROM (
SELECT DISTINCT MIN(SERVICE_DATE) AS FIRST_PHONE_CONTACT
,a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid
FROM A
LEFT JOIN D ON A.CLT_CLT_PGMID = D.CLT_CLT_PGMID AND A.ID_CARD = D.ID_CARD
WHERE 1=1
rownum <10
GROUP BY a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid
) B
下面是错误发生的地方
ABS(TO_DATE(B.FIRST_ASSGN_DT, 'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT, 'DD-MM-YYYY')) AS FIRST_Contacted_By_Phone_Days
理想情况下两者都应该有效。请参考Post
- ODBC provides access only to relational databases
- OLE DB provides the following features
- Access to data regardless of its format or location
- Full access to ODBC data sources and ODBC drivers
因此 OLE DB 似乎通过 ODBC 驱动程序层与基于 SQL 的数据源进行交互。
在您的 PC 上查看此内容:
对于 OLE DB,它表示:
不能使用 ALTER SESSION SET NLS_DATE_FORMAT 命令设置 Oracle 会话的日期格式。在 Visual Basic 中,日期格式由 Windows 控制面板中的区域设置属性控制。有关 Visual Basic 日期格式的详细信息,请参阅 Visual Basic 文档。
对于 OLE DB 的 Oracle Provider,如果 Connection 属性 UseSessionFormat 为 FALSE,这是默认值,那么 NLS_DATE_FORMAT 将会话固定为 'YYYY-MM-DD HH24:MI:SS' 由提供商提供。如果将日期作为字符串传递给 Oracle 数据库,则日期必须采用 'YYYY-MM-DD HH24:MI:SS' 格式。如果 UseSessionFormat 为 TRUE,则 NLS_DATE_FORMAT 未由 Oracle Provider for OLE DB 修复,并且使用默认会话 NLS_DATE_FORMAT。
ODBC 的行为可能不同。
我正在通过 Qlikview 连接到 pl/sql (oracle),对于同一个脚本,我使用 ODBC 连接并且脚本运行没有问题,但是当我使用 OLEDB 连接时,我收到错误 ORA- 01861:文字与格式字符串不匹配。我的问题主要是为什么我的脚本可以使用 ODBC 连接而不是 OLEDB?
添加代码,因为我想让我的查询与 OLE DB 连接兼容...下面是发生挂断的地方...
SELECT DISTINCT B.CLT_CLT_PGMID,TO_CHAR(B.FIRST_PHONE_CONTACT,'MM/DD/YYYY') AS FIRST_PHONE_CONTACT,
ABS(TO_DATE(B.FIRST_ASSGN_DT, 'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT, 'DD-MM-YYYY')) AS FIRST_Contacted_By_Phone_Days
FROM (
SELECT DISTINCT MIN(SERVICE_DATE) AS FIRST_PHONE_CONTACT
,a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid
FROM A
LEFT JOIN D ON A.CLT_CLT_PGMID = D.CLT_CLT_PGMID AND A.ID_CARD = D.ID_CARD
WHERE 1=1
rownum <10
GROUP BY a.FIRST_ASSGN_DT, a.FIRST_CONTACT_DT, d.is_visit, d.attempt_or_contact,a.PERS_GEN_KEY,a.CLIENT_PROGRAM,a.clt_clt_pgmid
) B
下面是错误发生的地方 ABS(TO_DATE(B.FIRST_ASSGN_DT, 'DD-MM-YYYY') - TO_DATE(B.FIRST_PHONE_CONTACT, 'DD-MM-YYYY')) AS FIRST_Contacted_By_Phone_Days
理想情况下两者都应该有效。请参考Post
- ODBC provides access only to relational databases
- OLE DB provides the following features
- Access to data regardless of its format or location
- Full access to ODBC data sources and ODBC drivers
因此 OLE DB 似乎通过 ODBC 驱动程序层与基于 SQL 的数据源进行交互。
在您的 PC 上查看此内容:
对于 OLE DB,它表示:
不能使用 ALTER SESSION SET NLS_DATE_FORMAT 命令设置 Oracle 会话的日期格式。在 Visual Basic 中,日期格式由 Windows 控制面板中的区域设置属性控制。有关 Visual Basic 日期格式的详细信息,请参阅 Visual Basic 文档。
对于 OLE DB 的 Oracle Provider,如果 Connection 属性 UseSessionFormat 为 FALSE,这是默认值,那么 NLS_DATE_FORMAT 将会话固定为 'YYYY-MM-DD HH24:MI:SS' 由提供商提供。如果将日期作为字符串传递给 Oracle 数据库,则日期必须采用 'YYYY-MM-DD HH24:MI:SS' 格式。如果 UseSessionFormat 为 TRUE,则 NLS_DATE_FORMAT 未由 Oracle Provider for OLE DB 修复,并且使用默认会话 NLS_DATE_FORMAT。
ODBC 的行为可能不同。