Php 如何使用trunc更改Oracle DB中的默认日期格式?

Php 如何使用trunc更改Oracle DB中的默认日期格式?,php,oracle,pdo,oracle11g,Php,Oracle,Pdo,Oracle11g,我有两个独立的数据库 当我在第一个数据库上运行查询时: select TO_DATE( sysdate , 'YY-MM-DD')- 1 / 86400 data1, trunc(sysdate, 'dd') data2, to_char( sysdate, 'YYYY-MM-DD') date3 from dual 它返回以下结果: [data1] => 14/07/02 [data2] => 14/07/02 [dat

我有两个独立的数据库

当我在第一个数据库上运行查询时:

select
      TO_DATE( sysdate , 'YY-MM-DD')- 1 / 86400 data1,
      trunc(sysdate, 'dd') data2,
      to_char( sysdate, 'YYYY-MM-DD') date3
from dual
它返回以下结果:

    [data1] => 14/07/02
    [data2] => 14/07/02
    [date3] => 2014-07-02
当我在第二个数据库上运行相同的查询时:

select
      TO_DATE( sysdate , 'YY-MM-DD')- 1 / 86400 data1,
      trunc(sysdate, 'dd') data2,
      to_char( sysdate, 'YYYY-MM-DD') date3
from dual
返回我的结果如下

    [data1] => 14-JUL-02
    [data2] => 02-JUL-14
    [date3] => 2014-07-02
如何将带有OCI的DB2的响应更改为返回日期格式(如DB1)

到DB1的连接字符串

try
{
    $pdo = new PDO('oci:dbname='.User::db1()->hostfullspec, User::db1()->login, User::db1()->passwd);
    $pdo ->setAttribute(PDO::ATTR_CASE,PDO::CASE_LOWER);
    $pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
} catch (PDOException $e) {
     die("ORA RAP: PDO CONNECTION ERROR: " . $e->getMessage() ).PHP_EOL;
}
到DB2的连接字符串

try
{
    $pdo = new PDO('oci:dbname='.User::db2()->hostfullspec, User::db2()->login, User::db2()->passwd);
    $pdo ->setAttribute(PDO::ATTR_CASE,PDO::CASE_LOWER);
    $pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
} catch (PDOException $e) {
     die("ORA RAP: PDO CONNECTION ERROR: " . $e->getMessage() . "<br/>");
}
试试看
{
$pdo=new pdo('oci:dbname='.User::db2()->hostfullspec,User::db2()->login,User::db2()->passwd);
$pdo->setAttribute(pdo::ATTR_CASE,pdo::CASE_LOWER);
$pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_WARNING);
}捕获(PDO$e){
die(“ORA RAP:PDO连接错误:“..e->getMessage()”
); }
请参见 所以答案是

ALTER SESSION SET NLS_DATE_格式='YY-MM-DD'

你应该做一个

alter session set nls_date_format='yy-mm-dd';
此外,守则

TO_DATE( sysdate , 'YY-MM-DD')- 1 / 86400 data1,
应该是

to_char(sysdate - 1/86400, 'YY-MM-DD') data1,
或者,如果设置NLS,只需

sysdate - 1/86400 data1,