2016-06-27 6 views
1

でWindowsとLinuxで異なるデータをアーカイブOracle 11gの `TIMESTAMP(6)が、私はそれがあるデータ・タイプ<code>TIMESTAMP(6) with Local Time Zone</code>とデータを持っているのOracle 11gの列を持っているCSV

01-JAN-03 02.00.00.000000000 AM

07-APR-16 12.32.32.996000000 PM

02-MAY-16 12.06.42.219000000 PM

02-MAY-16 03.03.20.796000000 PM

私はこのコードを使用して、Windowsでこのデータをアーカイブ -

TIMESTAMPLTZ columnValue = (TIMESTAMPLTZ) row.getValues()[pos]; 
    String timestamp = columnValue.toString(connection, columnValue.getBytes()); 

    public static String toString(Connection var0, byte[] var1) throws SQLException { 
      return toString(var0, var1, (Calendar)null); 
     } 
public static String toString(Connection var0, byte[] var1, Calendar var2) throws SQLException { 
     Calendar var3 = toCalendar(var0, (Calendar)null, var1, var2); 
     int var4 = var3.get(1); 
     int var5 = var3.get(2) + 1; 
     int var6 = var3.get(5); 
     int var7 = var3.get(11); 
     int var8 = var3.get(12); 
     int var9 = var3.get(13); 
     int var10 = -1; 
     if(var1.length == SIZE_TIMESTAMPLTZ) { 
      var10 = TIMESTAMP.getNanos(var1, 7); 
     } 

     return TIMESTAMPTZ.toString(var4, var5, var6, var7, var8, var9, var10, var3.getTimeZone().getID()); 
    } 

ここでのtoString()関数TIMESTAMPLTZクラスです。私はメタデータをアーカイブされたデータに使用しています。 WINDOWSでのCSVファイルのアーカイブされたデータは次のように示してある -

2003-01-01午前2時00分00秒アジア/カルカッタ

2016年4月7日12:32:32.996アジア/カルカッタ

2016年5月2日12:06:/カルカッタ

42.219アジア

2016年5月2日15:03:20.796アジア/カルカッタ

と同じコードで、私は01でアーカイブ同じデータを午前。 02:32.996 GMT

2016年5月2日06:

2002-12-31 20時30分00秒GMT

2016年4月7日07 - csvファイルのようなデータを示しています36:42.219 GMT

2016年5月2日09:33:20.796 GMT

ウィンドウと同じCSVデータを取得するために、私はLinuxの中で何ができますか? ありがとうございます。

EDIT

私は私のcolvalue.getBytes(columnValue.toString();文を実行)LinuxとWindowsの両方で120,116,4,7,8,3,33,59,93,-63,0あり、私は窓に2016-04-07 12:32:32.996 Asia/Calcutta結果を取得し、同じ値を持つ私は、Linuxで2016-04-07 07:02:32.996 GMT結果を取得します。 linuxでウィンドウと同じ結果を得るにはどうすればよいですか?

答えて

1

データタイプTIMESTAMP(6) WITH LOCAL TIME ZONEは、時刻がの場合は、常に(と表示されます)がローカルタイムゾーンに表示されていることを示します。したがって、出力タイムゾーンを変更することはできません。あなたはどちらか

  1. は、あなたのSESSIONTIMEZONEクエリを実行する前に、すなわちを変更することができ、「アジア/カルカッタ」でそれを得るためには

    お使いのコンピュータで

    ALTER SESSION SET TIME_ZONE = 'Asia/Calcutta';

  2. 設定Asia/Calcuttaタイムゾーン環境でデータベースに接続する前に、すなわちexport ORA_SDTZ=Asia/Calcutta

  3. はすなわち

    、「アジア/カルカッタ」にそれを変換、その後TIMEZONEに値をキャストし、

    TO_CHAR((CAST(CAST(SYSTIMESTAMP AS TIMESTAMP WITH LOCAL TIME ZONE) AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE 'Asia/Calcutta'), 'yyyy-mm-dd hh24:mi:ss tzr')

+0

投稿された更新... –

+0

回答の誤字が修正されました –

関連する問題