我是PL/SQL的新手,并且有这个问题。如何在PLSQL中格式化Date变量
我创建的过程有以下规格:
PROCEDURE runschedule (i_RunDate IN DATE)
这i_RunDate
是在一个特定的格式,我需要将其更改为以下格式:
'MM/dd/yyyy hh:mi:ss PM'
我找不到如何重新格式化Date变量。
我是PL/SQL的新手,并且有这个问题。如何在PLSQL中格式化Date变量
我创建的过程有以下规格:
PROCEDURE runschedule (i_RunDate IN DATE)
这i_RunDate
是在一个特定的格式,我需要将其更改为以下格式:
'MM/dd/yyyy hh:mi:ss PM'
我找不到如何重新格式化Date变量。
DATE没有特定的格式,DATE是日期。当存储在数据库列中时,日期值包括午夜以来的时间(以秒为单位),并且DATE变量具有相同的值,只有当您显示变量的某个点被格式化时。 PL/SQL可以隐式转换某个值的数据类型,例如,可以将CHAR值'02 -JUN-92'转换为DATE值..但我不建议您依赖此隐式转换。我总是使用显式转换。 更多关于这个话题,你可以这样说的:如果你想格式化你的约会记录的东西,或在您以不同格式UI或wathever显示 http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/datatypes.htm#i9118
在你的情况,你需要assig它为varchar变量贾斯汀说,这样的事情:
....
v_generated_run_date DATE;
v_var_date VARCHAR2(30);
BEGIN -- generate sysdate if required
IF (i_RunDate is null)
THEN
v_var_date:=TO_CHAR(sysdate, 'MM/DD/YYYY HH12:MI:SS AM');
ELSE
v_var_date:=TO_CHAR(i_RunDate,'MM/DD/YYYY HH12:MI:SS AM');
END IF;
pkgschedule.createschedule (v_var_date);
commit;
END runschedule;
END
你createschedule过程,在这种情况下,将有一个VARCHAR2参数...
您需要使用TO_CHAR
函数。下面是一个示例:
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MM/DD/YYYY HH12:MI:SS AM') FROM dual;
感谢贾斯汀,但不是TO_CHAR会返回一个VARCHAR?我需要重新格式化它,并将其保留为Date变量。你能提出一些建议吗? – Yoni
你可以发布一些代码,告诉我你是如何使用它?通常情况下,你只需要格式化一个日期类型就是把它作为一个字符串输出,所以我对你正在做的事情有点困惑。 –
创建或更换包装箱pkgtmschedule AS PROCEDURE runschedule(i_RunDate IN DATE默认系统日期)IS v_generated_run_date DATE; BEGIN - 如果需要生成sysdate IF(i_RunDate为空)然后 SELECT sysdate INTO v_generated_run_date FROM dual; ELSE v_generated_run_date:= i_RunDate; END IF; pkgschedule.createschedule(v_generated_run_date); 承诺; END runschedule; END pkgtmschedule; / – Yoni
你可能想看看DBMS_SCHEDULER包和Oracle概念指南。为了避免编写自己的运行计划程序,人们在Oracle上花费了大量资金。 –