SQL日期时间变量
当我使用此选项时:SQL日期时间变量,sql,oracle,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');
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');
编辑
有关_char的更多信息:
将返回的datetime值指定给varchar时,您正在隐式转换为\u date。您应该使用适当的样式将其显式转换为字符,例如:
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');
如前所述,使用
将日期格式化为\u 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
格式代码有文档记录您使用的是哪种DBMS?神谕它非常重要,特别是在日期和时间方面,每个系统都不同于其他系统(至少部分不同)。