在jasper的日期转换中找不到时区区域问题

时间:2017-09-20 13:03:11

标签: datetime casting timestamp-with-timezone

我的要求是需要将yyyy-MM-dd(用户输入值)格式的输入日期值转换为GMT,我们有自己的时区表,用于存储所有时区值。所以我们需要将输入值(yyyy-MM-dd)转换为GMT,因为我们只将值存储在GMT中。我已尝试使用FROM_TZ,CAST函数但未找到时区区域问题。 任何人都可以相应地建议更改。

这里附加了一些示例代码(这是用户输入值)。 在时区“GMT”的start_time> = to_date(to_char((from_tz(to_timestamp('2017-09-01','yyyy-MM-dd HH:MI:SS AM'),tz.offSet),'MM / dd / yyyy HH:MI AM'),'MM / dd / yyyy HH:MI AM')

谢谢, 桑特

1 个答案:

答案 0 :(得分:0)

我在我的案子中这样做了:

-- returns a date value of a date converted in UTC and formated
cst_timestamp_fmt      constant varchar2(20) := 'DD-MON-YY HH24:MI:SS';

function fn_Date_To_UTC_Formated(p_date date) return date is
   begin
      return to_date(to_char(
                   to_timestamp(
                    sys_extract_utc(
                           to_timestamp(
                                   to_char(p_date,
                                           cst_timestamp_fmt
                                           ),
                                   cst_timestamp_fmt
                                       )
                                   )
                               ),
                    'YYYY-MM-DD"T"HH24:MI:SS"Z"'
                            ),
                 'YYYY-MM-DD"T"HH24:MI:SS"Z"'
                    );

end fn_Date_To_UTC_Formated;

并测试它:

declare
cst_timestamp_fmt      constant varchar2(20) := 'DD-MON-YY HH24:MI:SS';
 function fn_Date_To_UTC_Formated(p_date date) return date is
       begin
          return to_date(to_char(
                    to_timestamp(
                        sys_extract_utc(
                               to_timestamp(
                                       to_char(p_date,
                                               cst_timestamp_fmt
                                               ),
                                       cst_timestamp_fmt
                                           )
                                       )
                                ),
                        'YYYY-MM-DD"T"HH24:MI:SS"Z"'),'YYYY-MM-DD"T"HH24:MI:SS"Z"'
                        );

    end fn_Date_To_UTC_Formated;
begin
   dbms_output.put_line(' sysdate : '||to_char(sysdate, cst_timestamp_fmt));
   dbms_output.put_line(' result  : '||to_char(fn_Date_To_UTC_Formated(sysdate),cst_timestamp_fmt));
end;

结果是

 sysdate : 20-SEP-17 15:20:09
 result  : 20-SEP-17 13:20:09
希望能有所帮助。