SQL日期时间变量
问题描述:
当我使用这个:SQL日期时间变量
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
我怎样才能让变量保持一天的时间?
答
这应该工作:
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_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');
答
无论是与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';
甲骨文DATETIME
格式代码都记录here您使用哪种DBMS
?甲骨文?它非常重要,特别是在日期和时间方面,每个系统与其他系统(至少部分)是不同的。 –
DBMS是Oracle。 – jackchammons