我正在使用以下功能。
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”
在预先感谢您的帮助。
答案 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