【问题标题】:oracle query not working in PHP 4oracle 查询在 PHP 4 中不起作用
【发布时间】:2011-05-22 04:16:11
【问题描述】:

我正在尝试在 PHP 4 中执行 oracle(11g) 查询,但最终失败了。但是同样的查询在sql plus中是成功的。与数据库的连接正常,因为所有其他查询都成功运行。我在下面粘贴查询:

SELECT to_CHAR(A.FROM_DATE,'DD-MM-RRRR HH:MIAM'),
       to_CHAR(A.TO_DATE,'DD-MM-RRRR HH:MIAM'), 
       A.PLACE_OF_VISIT, 
       A.PURPOSE_OF_VISIT, 
       C.EMPLOYEE_NAME, 
       A.CONTACT_NO,
       B.ABSENCE_TYPE,
       A.REMARKS,
       D.EMPLOYEE_NAME 
  FROM EMP_ABSENCE_DETAILS A,
       ABSENCE_TYPE B,
       EMPLOYEE_MASTER C,
       EMPLOYEE_MASTER D 
 WHERE A.EMP_CODE LIKE '%' 
   AND A.REASON_OF_ABSENCE = B.CODE 
   AND A.ENTRY_STATUS ='A' 
   AND ltrim(rtrim(C.EMPLOYEE_CODE))=ltrim(rtrim((A.OFFICER_EMP_CODE))) 
   AND ltrim(rtrim(D.EMPLOYEE_CODE))=ltrim(rtrim((A.EMP_CODE))) 
   AND to_date('30/11/2010','DD/MM/RRRR') >= to_date(FROM_DATE,'DD/MM/RRRR') 
   AND to_date('30/11/2010','DD/MM/RRRR')<= to_date(TO_DATE,'DD/MM/RRRR') 

请帮帮我

感谢和问候

杰西

【问题讨论】:

  • 您是否收到任何错误返回?如果是这样,了解它们是什么很有用。
  • 您使用的 php 代码是什么? OCI8 扩展?
  • 没有错误,它与查询末尾的日期有关。当我删除最后一个日期部分时,它在 PHP 中工作。有人请告诉我如何将 PL/SQL 中的日期与 php 4 进行比较。在此先感谢
  • 这不是 PHP 相关的错误...是 PL/SQL 错误,你能复制粘贴错误吗?
  • FROM_DATE 和 TO_DATE 列是日期还是 varchar2s?

标签: php oracle11g


【解决方案1】:
SELECT to_CHAR(A.FROM_DATE,'DD-MM-RRRR HH:MIAM'),
       to_CHAR(A.TO_DATE,'DD-MM-RRRR HH:MIAM'), 
       A.PLACE_OF_VISIT, 
       A.PURPOSE_OF_VISIT, 
       C.EMPLOYEE_NAME, 
       A.CONTACT_NO,
       B.ABSENCE_TYPE,
       A.REMARKS,
       D.EMPLOYEE_NAME 
  FROM EMP_ABSENCE_DETAILS A,
       ABSENCE_TYPE B,
       EMPLOYEE_MASTER C,
       EMPLOYEE_MASTER D 
 WHERE A.EMP_CODE LIKE '%' 
   AND A.REASON_OF_ABSENCE = B.CODE 
   AND A.ENTRY_STATUS ='A' 
   AND ltrim(rtrim(C.EMPLOYEE_CODE))=ltrim(rtrim((A.OFFICER_EMP_CODE))) 
   AND ltrim(rtrim(D.EMPLOYEE_CODE))=ltrim(rtrim((A.EMP_CODE))) 
   AND to_date('30/11/2010','DD/MM/RRRR') >= trunc(A.FROM_DATE) 
   AND to_date('30/11/2010','DD/MM/RRRR')<= trunc(A.TO_DATE) 

编辑 对于@powtac

AND to_date('30/11/2010','DD/MM/RRRR') >= to_date(FROM_DATE,'DD/MM/RRRR') 
AND to_date('30/11/2010','DD/MM/RRRR')<= to_date(TO_DATE,'DD/MM/RRRR') 

已被替换为

AND to_date('30/11/2010','DD/MM/RRRR') >= trunc(A.FROM_DATE) 
AND to_date('30/11/2010','DD/MM/RRRR')<= trunc(A.TO_DATE) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多