我通过Qlikview连接到pl / sql(oracle),对于相同的脚本,我使用ODBC连接,脚本运行没有问题,但是当我使用OLEDB连接时,我收到错误ORA-01861:literal不匹配格式字符串。我的问题主要是为什么我的脚本使用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
答案 0 :(得分:2)
在您的电脑上查看此内容:
对于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,则Oracle Provider for OLE DB不会修复NLS_DATE_FORMAT,并且使用默认会话NLS_DATE_FORMAT。
ODBC的行为可能不同。
答案 1 :(得分:0)
理想情况下两者都应该有效。请参阅Post
- ODBC仅提供对关系数据库的访问
- OLE DB提供以下功能
- 访问数据,无论其格式或位置如何
- 对ODBC数据源和ODBC驱动程序的完全访问权限
因此,OLE DB似乎与基于SQL的数据源THRU ODBC驱动程序层交互。