【问题标题】:Oracle problems with DATEsOracle 日期问题
【发布时间】:2009-10-12 10:48:50
【问题描述】:

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

在我的 PHP 脚本中,我将 Dateformat 设置为:

$db->query('ALTER SESSION SET NLS_DATE_FORMAT = "DD-MM-RR"');

在 2 台机器上,我正在接收这个字符串作为值(这对我来说是正确的): ["TIME_INSERT"] => string(24) "05.10.07 14:20:05,000000"

在运行相同脚本的一台 linux 机器上,它返回: ["TIME_INSERT"] => string(28) "05-OCT-07 02.20.05.000000 PM"

任何想法如何改变这个?

【问题讨论】:

    标签: oracle date


    【解决方案1】:

    您应该设置会话参数NLS_TIMESTAMP_FORMATNLS_TIMESTAMP_TZ_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 和敬畏:我同意,我一直主张使用显式日期转换。
    • sorry 设置时间戳格式后还是一样的结果(;
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多