SQL日期时间变量

时间:2013-06-04 19:19:58

标签: sql oracle

当我使用它时:

    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                     

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在将其分配给varchar时,您隐式转换to_date返回的日期时间值。您应该使用适当的样式显式转换它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');

答案 2 :(得分: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';

Oracle DATETIME格式代码记录在案here