PL / SQL插入日期与过程

时间:2016-06-20 20:45:08

标签: oracle date plsql insert

我想在日期表中插入日期,方法是将日期作为('19-JUN-1997')参数传递给过程。谁能给我一个例子怎么做?通过将变量放在TO_DATE(my_var)中来尝试插入日期,我似乎做错了。

SET SERVEROUTPUT ON
BEGIN 
p_date('14-MAR-2017');
END;
CREATE OR REPLACE PROCEDURE p_date(
v_date IN Dates.date1%type) IS
BEGIN
INSERT INTO Dates
(date1)
VALUES
(TO_DATE(v_date ));
END;

1 个答案:

答案 0 :(得分:2)

如果您知道日期的格式(例如,dd-mon-yyyy),那么最安全的做法是使您的插入语句如下:

INSERT INTO Dates (date1)
VALUES (TO_DATE(v_date, 'DD-MON-YYYY');

为了使您的示例有效,字符串日期格式必须采用数据库中的默认日期格式。您可以使用以下命令获取数据库默认格式的值:

SELECT value
FROM   nls_session_parameters
WHERE  parameter = 'NLS_DATE_FORMAT'

但是,如果更改了默认格式并且您依赖它,则代码将中断。它还告诉读者代码您期望的日期格式是什么。