3

当我使用这个时:

    VAR v_start_date VARCHAR2(30);
    EXEC :v_start_date := to_date('03-06-2013 04:00:00 PM','DD-MM-RRRR HH:MI:SS AM');
    VAR v_end_date VARCHAR2(30);
    EXEC :v_end_date := to_date('04-06-2013 04:00:00 PM','DD-MM-RRRR HH:MI:SS AM');

    print v_start_date
    print v_end_date 

我的输出缩短为:

    v_start_date                  
    ------------------------------
    03-JUN-13                     

    v_end_date                    
    ------------------------------
    04-JUN-13                     

如何使变量保留一天中的时间?

4

3 回答 3

0

这应该有效:

VAR v_start_date VARCHAR2(30);
EXEC :v_start_date := to_date('03-06-2013 04:00:00 PM','DD-MM-RRRR HH:MI:SS AM');
VAR v_end_date VARCHAR2(30);
EXEC :v_end_date := to_date('04-06-2013 04:00:00 PM','DD-MM-RRRR HH:MI:SS AM');

print to_char(v_start_date,'DD-MM-RRRR HH:MI:SS AM');
print to_char(v_end_date,'DD-MM-RRRR HH:MI:SS AM');

编辑

有关 to_char 的更多信息:

to_char

于 2013-06-04T19:28:57.957 回答
0

在将 to_date 返回的日期时间值分配给 varchar 时,您正在隐式转换它。您应该使用to_char适当的样式显式转换它,例如:

EXEC :v_start_date := to_char(
    to_date('03-06-2013 04:00:00 PM','DD-MM-RRRR HH:MI:SS AM'), 
    'YYYY-MM-DD HH24:MI:SS');
于 2013-06-04T19:31:01.770 回答
0

TO_CHAR使用已经指出的格式化日期,或者使用当前 SQLPlus 会话的世纪和时间输出所有日期,使用以下设置会话日期格式:

ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH:MI:SS AM';

在该点之后查询的任何日期都将采用指定的格式。

要重置为通常的 Oracle 默认值:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-RR';

OracleDATETIME格式化代码记录在这里

于 2013-06-04T19:32:44.383 回答