【问题标题】:Timezone region not found issue in date conversion for jasperjasper 的日期转换中未找到时区区域
【发布时间】:2017-09-20 13:03:11
【问题描述】:

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

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

谢谢, 桑特

【问题讨论】:

    标签: datetime casting timestamp-with-timezone


    【解决方案1】:

    我是这样做的:

    -- 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
    

    希望能有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 2019-10-24
      • 2013-01-17
      • 1970-01-01
      相关资源
      最近更新 更多