我是 PL/SQL 的新手并且有这个问题。
我创建了一个具有以下规范的过程:
PROCEDURE runschedule (i_RunDate IN DATE)
Run Code Online (Sandbox Code Playgroud)
这i_RunDate是一种特定的格式,我需要将其更改为这种格式:
'MM/dd/yyyy hh:mi:ss PM'
Run Code Online (Sandbox Code Playgroud)
我找不到如何重新格式化 Date 变量。
您需要使用该TO_CHAR功能。下面是一个例子:
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MM/DD/YYYY HH12:MI:SS AM') FROM dual;
Run Code Online (Sandbox Code Playgroud)
DATE没有特定的格式,DATE就是DATE。当存储在数据库列中时,日期值包括自午夜以来以秒为单位的时间,并且 DATE 变量具有相同的内容,只是在某些时候显示变量已格式化。PL/SQL 可以隐式转换值的数据类型,例如,可以将 CHAR 值“02-JUN-92”转换为 DATE 值。但我不建议您依赖这种隐式转换。我总是使用显式转换。有关此主题的更多信息,您可以阅读以下内容: http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/datatypes.htm#i9118
在您的情况下,如果您想格式化 DATE 来记录某些内容,或者以不同的格式在 UI 中显示,您需要将其分配给 varchar 变量,正如 Justin 所说,如下所示:
....
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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您的createschedule 过程将有一个varchar2 参数...
| 归档时间: |
|
| 查看次数: |
50239 次 |
| 最近记录: |