有没有一种方法可以将TIMESTAMP_WITH_TIMEZONE用作Oracle中的函数输入

时间:2020-08-10 13:12:54

标签: java sql oracle

我正在尝试创建一个接受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(); 
}

执行此操作的理想方法是什么。

1 个答案:

答案 0 :(得分:0)

想出了一种方法。万一任何人都需要有关此问题的帮助,我将围绕我以前的工作发表。

  1. 将带有时区的日期作为VARCHAR2传递给函数

    创建函数my_func(timetz IN VARCHAR2) //这里的代码 开始 //用法 TO_TIMESTAMP_TZ(timetz,'YYYY-MM-DD HH24:MI:SS TZR') END;

  2. 通过java中的字符串将时区作为字符串传递时间戳

    SimepleDateFormatter sdf =新的SimpleDateFormatter('yyyy-mm-dd HH:mm:ss') sdf.format(new Timestamp())+“” +“太平洋地区/美国”

    stmt.setString(1,timestampTZString);

相关问题