2016-06-24 14 views
0

と同じデータ型を持っている必要があります私は、タイムスタンプ、+間隔として、TO_CHARのような別のキャストを試してみた「1」の日エラーError: ORA-01790: expression must have same datatype as corresponding expressionエラー:ORA-01790:式は以下を実行して対応する式

with x (id, dateN) as 
(
select 1, to_date('2015-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') from dual 
union all 
select id+1, dateN+1 from x where id < 10 
) 
select * from x 

を持って、そうですが、このエラーは表示され続けます。 Mssql上では、関数dateadd('dd', 1, dateN)で非常に簡単ですが、ここでそれを達成する方法は非常に明白ではありません。

Oracle Database 11gのEnterprise Editionのリリース11.2.0.1.0 - 64ビットの生産

+0

私はそれが日付だと思うが、私はそれはまた、タイムスタンプであることを試みました。ああ、申し訳ありません、私は間違っていました、それはdateNです。 – Dmitrii

+0

あなたは一連の日付を生成しようとしていますか? –

+0

私は、次のそれぞれの生成された日付が前の日よりも1日多く、最初の選択で最初のものが生成されます。 – Dmitrii

答えて

2

あなたがベースのリリースにしているので、これはのように見えるが11840579.あなたは値をキャストすることによって、それを回避することができるかもしれ - それは必要ではないはずですが、それはあなたにとってバグです。

with x (id, dateN) as 
(
    select 1, cast(to_date('2015-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') as date) from dual 
    union all 
    select id+1, dateN+1 from x where id < 10 
) 
select * from x; 

変換に余分な要素を含めるのは少し意味がありません。個人的に私はとにかく日付リテラルを好む:第二がありますしかし

select dump(date '2015-05-01', 16) as d1, dump(cast(date '2015-05-01' as date), 16) as d2 
from dual; 

D1        D2        
-------------------------------- -------------------------------- 
Typ=13 Len=8: df,7,5,1,0,0,0,0 Typ=12 Len=7: 78,73,5,1,1,1,1 

with x (id, dateN) as 
(
    select 1, cast(date '2015-05-01' as date) from dual 
    union all 
    select id+1, dateN+1 from x where id < 10 
) 
select * from x; 

二つの値、date '2015-01-01'cast(date '2015-05-01' as date)は、問題の原因となっているようだ異なる内部表現とは若干異なる種類の、ありますそれは間違った結果を返すことができるというバグの一部です。あなたは、問題を回避するために、アップパッチを適用できない場合は、旧式の階層クエリのアプローチを使用できます。

select level as id, date '2015-05-01' + level - 1 as dateN 
from dual 
connect by level < 10; 
+0

今すぐ動作しますが、日付は降順です。 2015-05-01 00:00:00.0 2015-04-30 00:00:00 2015-04-29 00:00:00.0 – Dmitrii

+0

ああ... My Oracle Supportに関する完全なバグの説明を読む必要があります。私はパッチをとることを除いて、そのための回避策はないと思います。 DBAと話をすることができます(サポート契約がある場合)。 –

+0

@Dmitrii - このバグにパッチを当てることができない場合に備えて、日付を取得する別の方法を追加しました。 –

関連する問題