2017-12-11 4 views
0

CSTとCDTを含むタイムゾーンのデータを含むcsvファイルがあります。
07日 - 3月 - 2017年11時00分00秒PM CST
03 - 10月 - 2017年11時00分00秒PM CDTCST/CDT日付からMM/DD/YYYY hh:mm in oracle

CSVでの日付フィールドとして格納されている:例えばのために

varchar2(30)。

ターゲット日付フィールドは以下のようなフォーマットに変換する必要があります

 MM/DD/YYYY hh:mm 

はどのように我々は、ソースファイル内の2 timezinesを持って検討するOracleでこの変換をやって行くことができますか?

助けてください。 TIMESTAMP WITH TIME ZONEデータ型としてそれを読むために

おかげで多くの
ティナ

+0

両方をcstまたはcdtに変換します。そしてそれを保管してください。もう一度表示されている間に逆変換...または同じ時間帯にそれらを保存することができます。それはすべてあなたの要件とそのデータで何をしたいのかによって異なります。 – nikunjM

+2

MT0はすでに正しいことをあなたに示しました。あなたが主なポイントを逃していないことを確認するだけです:あなたは "目標の日付フィールドをフォーマットに変換する必要がある...."これは間違っています。ターゲットフィールドはデータ型 'タイムゾーン付きタイムスタンプ 'でなければなりません。タイムスタンプには "フォーマット"がありません。保存したデータを表示するときにのみそのフォーマットを選択しますが、保存されたデータ自体にはフォーマットはありません。 – mathguy

+2

CSTとCDTは、米国中部標準時と米国中部夏時間(キューバ標準/夏時間、または夏時間のない中国標準時ではない)を意味し、2つの別々のタイムゾーンはありません。タイムゾーンIDがアメリカ/シカゴの –

答えて

0

使用TO_TIMESTAMP_TZ。共通のタイムゾーンに変換する場合は、AT TIME ZONE 'UTC'を使用してUTCタイムゾーンに変換します(例)。

SQL Fiddle

Oracleの11グラムR2スキーマのセットアップ:1

CREATE TABLE your_table (value) AS 
SELECT '07-Mar-2017 11:00:00 PM CST' FROM DUAL UNION ALL 
SELECT '03-Oct-2017 11:00:00 PM CDT' FROM DUAL UNION ALL 
SELECT '03-Oct-2017 11:00:00 PM CST' FROM DUAL; 

問合せ:

SELECT TO_CHAR(
     TO_TIMESTAMP_TZ(
      value, 
      'DD-MON-YYYY HH12:MI:SS AM TZD', 
      'NLS_DATE_LANGUAGE=American' 
     ) AT TIME ZONE 'UTC', 
     'MM-DD-YYYY HH24:MI' 
     ) AS utc_time 
FROM your_table 

Results

|   UTC_TIME | 
|------------------| 
| 03-07-2017 23:00 | 
| 10-03-2017 23:00 | 
| 10-03-2017 23:00 | 
+0

ありがとうMuch @ MT0。目標はCSTになると思われる。上記のクエリを 'CST'にすると、次の日付が得られます。07-Mar-2017 11:00:00 PM CST \t 03-07-2017 23:00 03-Oct-2017 11:00:00 PM CDT \t 10-04-2017 00:00 – Tina

+0

So 3rd Oct 11 PM CDTが10月4日00:00に変更されました。 – Tina

関連する問題