Oracle将日期和时间插入日期列[存储过程]

问题描述:

我正在使用以下函数。Oracle将日期和时间插入日期列[存储过程]

TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

其工作的罚款,如果我从喜欢一个简单的查询更新数据: -

set modified_on= TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

但在存储过程的情况下不能正常工作。

注意: - 在存储过程中,我使用动态查询。立即执行....

没有错误,但只有日期插入或更新没有时间。

现在: - “31-07-2017” 需要这样的东西: - “31-07-2017 HH:MI:SS”

在此先感谢您的帮助。

+2

如果该列是日期,为什么你使用to_char? –

+0

因为我正在尝试按照前面提到的插入时间和日期。 –

+0

需要类似于: - “31-07-2017 hh:mi:ss” –

我可能会很生气,但我确定这个确切的问题已经逐字地发布过了,一切都很疯狂。无论如何..你写道:

TO_DATE(TO_CHAR (SYSDATE, 'YYYY-MON-DD HH24:MI:SS'),'yyyy/mm/dd hh24:mi:ss') 

这没有什么意义。你有一个日期,你将它转换成一个看起来像一种格式的字符串,并立即尝试并将其转换回日期,但使用不同的格式。你不能这么做:现在取这个日期并没有任何意义,并且把它转换成一个看起来像2017-JUL-31 18:28:00的字符串,然后让oracle用斜线和一个数字月来解释它 - 你刚刚准备的字符串有破折号,而不是斜杠。它有一个文本月份名称不是数字月份标识符..它不会工作。甲骨文将遇到第一个-,并期待\,它会窒息。

只需使用你必须先从日期,日期:

SYSDATE 

即:

set modified_on= SYSDATE 
+0

但SYSDATE将仅返回日期,我也需要时间。 –

+1

Oracle文档:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm - “SYSDATE返回为数据库所在的操作系统设置的当前日期**和时间** “ –

+0

嗨凯斯,查询其工作,但不适用于StoredProcedure。你可以看看下面的例子。 –

在Oracle中,当前日期+时间=系统日期。 select sysdate from dual会产生2017-07-31 23:18:40

+0

任何人都可以给我任何例子 –

+0

像这样: - 创建或替换程序Uspx_test(x number)是 BEGIN update x set modified_on = sysdate其中xx = x; end Uspx_test; –