如何在 PLSQL 中格式化日期变量

发布于 2024-12-05 17:03:07 字数 250 浏览 0 评论 0原文

我是 PL/SQL 新手,有这个问题。

我创建了一个具有以下规范的过程:

PROCEDURE runschedule (i_RunDate  IN DATE)

i_RunDate 采用特定格式,我需要将其更改为以下格式:

'MM/dd/yyyy hh:mi:ss PM'

我找不到如何重新格式化日期变量。

I am new to PL/SQL and have this question.

I created a procedure with the following specification:

PROCEDURE runschedule (i_RunDate  IN DATE)

this i_RunDate comes in a specific format, and I need to change it to this format:

'MM/dd/yyyy hh:mi:ss PM'

I couldn't find how to re-format a Date variable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

征﹌骨岁月お 2024-12-12 17:03:07

您需要使用TO_CHAR函数。这是一个例子:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MM/DD/YYYY HH12:MI:SS AM') FROM dual;

You need to use the TO_CHAR function. Here's an example:

SELECT TO_CHAR(CURRENT_TIMESTAMP, 'MM/DD/YYYY HH12:MI:SS AM') FROM dual;
嘴硬脾气大 2024-12-12 17:03:07

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 

你的createschedule过程,在这个这种情况,会有一个 varchar2 参数...

The DATE has not especific format, a DATE is a DATE. When stored in the database column, date values include the time of day in seconds since midnight, and a DATE variable has the same, only that when in some point you show the variable is formatted. PL/SQL can convert the datatype of a value implicitly, for example, can convert the CHAR value '02-JUN-92' to a DATE value.. but I don't recommend you rely on this implicit conversiosn. I always use the explicit conversion.
For more on this topic, you could read this:
http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/datatypes.htm#i9118

In your case, if you want to format your DATE to log something, or to show in your UI or wathever in a different format, you need to assig it to a varchar variable as Justin said, something like this:

....
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 

Your createschedule procedure, in this case, will have a varchar2 parameter...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文