Oracle的日期问题

Oracle的日期问题,oracle,date,Oracle,Date,我很困惑。Iam正在尝试从oracle表中读取值,格式:timestamp(6) 在我的PHP脚本中,im使用以下命令设置日期格式: $db->query('ALTER SESSION SET NLS_DATE_FORMAT = "DD-MM-RR"'); 在2台机器上,我将此字符串作为值接收(这对我来说是正确的): [“时间插入”]=>字符串(24)“05.10.07 14:20:05000000” 在一台运行相同脚本的linux机器上,它返回: [“时间插入”]=>字符串(28)“2

我很困惑。Iam正在尝试从oracle表中读取值,格式:timestamp(6)

在我的PHP脚本中,im使用以下命令设置日期格式:

$db->query('ALTER SESSION SET NLS_DATE_FORMAT = "DD-MM-RR"');
在2台机器上,我将此字符串作为值接收(这对我来说是正确的): [“时间插入”]=>字符串(24)“05.10.07 14:20:05000000”

在一台运行相同脚本的linux机器上,它返回: [“时间插入”]=>字符串(28)“2007年10月5日02.20.05.000000下午”


您知道如何更改吗?

您应该设置会话参数
NLS\u TIMESTAMP\u FORMAT
NLS\u TIMESTAMP\u TZ\u FORMAT
以根据需要显示时间戳数据:

SQL> select systimestamp from dual;

SYSTIMESTAMP
----------------------------------------------------
12/10/09 12:52:41,462532 +02:00

SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'dd.mm.rr hh24:mi:ss,ff5';

Session altered

SQL> select systimestamp from dual;

SYSTIMESTAMP
--------------------------------------------------------------------------------
12.10.09 12:56:36,14023

您应该设置会话参数
NLS\u TIMESTAMP\u FORMAT
NLS\u TIMESTAMP\u TZ\u FORMAT
以显示所需的时间戳数据:

SQL> select systimestamp from dual;

SYSTIMESTAMP
----------------------------------------------------
12/10/09 12:52:41,462532 +02:00

SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'dd.mm.rr hh24:mi:ss,ff5';

Session altered

SQL> select systimestamp from dual;

SYSTIMESTAMP
--------------------------------------------------------------------------------
12.10.09 12:56:36,14023

我通常在SQL中使用TO_CHAR()或绑定到JDBC数据类型。似乎比设置会话参数…和使用TO_DATE(…)更好。另一种方法是以您选择的格式插入值。@WW和awe:我同意,我一直主张使用显式日期转换。抱歉,设置时间戳格式后仍然会出现相同的结果(;我通常使用TO_CHAR()在SQL中或绑定到JDBC数据类型。似乎比设置会话参数更好…并使用to_DATE(…)以另一种方式以您选择的格式插入值。@WW和awe:我同意,我始终主张使用显式日期转换。很抱歉,设置时间戳格式后仍然会出现相同的结果(;