2016-06-16 6 views
0

を認識TO_DATE、私はこの日付の文字列を持っている:私は、私は、Oracle 12cのテーブルに日付を検索するためにそれを使用することができるようにしたい[OK]を日付

2016-05-31T23:00:00.000Z 

例えば

SELECT stuff 
FROM TABLE 
WHERE date_column > TO_DATE('2016-05-31T23:00:00.000Z', 'what goes here?'); 

この日付がどのような形式であるかわからない、誰でも助けてくれますか?これはおそらく、単純ですが、私はそれを見つけるように見えることはできません...

編集:これはあなたのローカルタイムゾーンに変換UTCを表す文字列を必要とするならば、あなたがする必要があるC#

+0

時間部分が必要ですか? –

+0

はい、私は時間の部分が必要です。 – dwjv

+2

@RickRunowski UTC( 'Z')から時間を調整する必要がある場合は、この質問タグは 'C# 'です。この質問タグは' Oracle' –

答えて

5

ではありませんいくつかのステップ。出発点は、Oracleが認識されないTとZの文字リテラル、とto_timestamp()を使用することです:

select to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') 
from dual; 

TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') 
------------------------------------------------------------------------- 
2016-05-31 23:00:00.000             

その後、あなたはタイムゾーンレス値が実際にfrom_tz()とUTCであることを述べることができる:

select from_tz(
    to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 
    'UTC') 
from dual; 

FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"' 
-------------------------------------------------------------------------------- 
2016-05-31 23:00:00.000 UTC              

次に、あなたがあなた自身のタイムゾーンに変換することができます:

select from_tz(
    to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 
    'UTC') at time zone 'Europe/London' 
from dual; 

FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"' 
-------------------------------------------------------------------------------- 
2016-06-01 00:00:00.000 EUROPE/LONDON           

日付データ型としてそれをバックしたい場合は、それを唱えることができます。

select cast(from_tz(
    to_timestamp('2016-05-31T23:00:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 
    'UTC') at time zone 'Europe/London' as date) 
from dual; 

CAST(FROM_TZ(TO_TIMESTAMP('2016-05-31T23:00:00.000Z','YYYY-MM-DD"T"HH24:MI:SS.FF 
-------------------------------------------------------------------------------- 
2016-06-01 00:00:00                
+1

これは、トリックを行うように見えます - 畳み込まれているようですが、あなたの時間に感謝します。私はちょうどBashがより多くの寛容であると分かったので、最初にそれを変換します: 'date -d" 2016-05-31T23:00:00.000Z "' – dwjv

関連する問題