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

时间:2017-07-31 17:24:02

标签: sql oracle datetime

我正在使用以下功能。

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 个答案:

答案 0 :(得分:0)

我可能会发疯,但我确信这个确切的问题已经逐字逐字地发布,并且一直都是疯狂的。无论如何..你写道:

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

这没有意义。你有一个日期,你将它转换为一个看起来像一种格式的字符串,并立即尝试将其转换回日期,但使用不同的格式。你不能这样做:现在拿日期并将其转换为类似2017-JUL-31 18:28:00的字符串然后让oracle用斜线和数字月来解释它是没有意义的 - 你刚刚拥有的字符串它准备有破折号,而不是斜线。它有一个文本月份名称而不是数字月份标识符..它将无法正常工作。 Oracle会点击第一个-并期望\并且它会窒息。

只需使用您必须开始的日期作为日期:

SYSDATE

即:

set modified_on= SYSDATE

答案 1 :(得分:0)

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