当我使用它时:
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
如何让变量保留一天中的时间?
答案 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的更多信息:
答案 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