我正在尝试创建一个接受TIMESTAMP_WITH_TIMEZONE值作为输入参数的Oracle SQL函数。
CREATE FUNCTION my_func ( timetz IN TIMESTAMP WITH TIMEZONE ) // Not going to work
// code here
BEGIN
// code here
END;
然后尝试如下传递输入。我试图将用户提供的其他时区设置为ZonedDateTime
值。在下面的代码中,以当前的LocalDateTime
为例。
public void myFunc( )
{
CallableStatement stmt = con.prepareCall("{call my_func ( ? )}");
stmt.setObject( ZonedDateTime.of( LocalDateTime.now() ), java.sql.Types.TIMESTAMP_WITH_TIMEZONE);
stmt.execute();
}
执行此操作的理想方法是什么。
答案 0 :(得分:0)
想出了一种方法。万一任何人都需要有关此问题的帮助,我将围绕我以前的工作发表。
将带有时区的日期作为VARCHAR2传递给函数
创建函数my_func(timetz IN VARCHAR2) //这里的代码 开始 //用法 TO_TIMESTAMP_TZ(timetz,'YYYY-MM-DD HH24:MI:SS TZR') END;
通过java中的字符串将时区作为字符串传递时间戳
SimepleDateFormatter sdf =新的SimpleDateFormatter('yyyy-mm-dd HH:mm:ss') sdf.format(new Timestamp())+“” +“太平洋地区/美国”
stmt.setString(1,timestampTZString);