[解決済み] ORA-01847 月曜日は1日から最終日の間でなければならない - しかし、データはOKです。
2022-03-12 11:39:55
質問
問題は解決しました。この記事の最後をご覧ください。
select節でto_dateを呼び出すと、すべてがうまくいき、12レコードの結果セットを得ることができます。
select value1,to_date(value1,'DD.MM.YYYY')
from variableindex
where
value1 is not null
and value1 <> '0'
and creation_time_ > to_timestamp('20140307','YYYYMMDD')
order by 2
リターン
'VALUE1' 'TO_DATE(VALUE1,'DD.MM.YYYY')'
'25.11.2013' 25.11.13
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'12.03.2014' 12.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'14.03.2014' 14.03.14
'20.03.2014' 20.03.14
'20.03.2014' 20.03.14
すべてのdatestringは期待通りに変換されました。
where節に次の行を追加すると
and to_date(value1,'DD.MM.YYYY') < to_date('20140301','YYYYMMDD')
受け取ります。
ORA-01847: Tag des Monats muss zwischen 1 und letztem Tag des Monats liegen
01847. 00000 - "day of month must be between 1 and last day of month"
*Cause:
*Action:
いや、本当に厄介なことになった...私はクエリを次のように変更した。
where id_ in (...)
で、元のクエリと同じ12個のレコードセットIDを使用しました。エラーなし...
GordonLinoffに感謝します。
select value1,to_date(value1,'DD.MM.YYYY') from variableindex
where
(case when value1 <> '0' then to_date(value1,'DD.MM.YYYY') end) > to_timestamp('20131114','YYYYMMDD')
and creation_time_ > to_timestamp('20140307','YYYYMMDD')
order by 2;
解決方法は?
これは、あなたのクエリに
where
節があります。
select value1, to_date(value1,'DD.MM.YYYY')
from variableindex
where value1 is not null and
value1 <> '0' and
creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
to_date(value1 'DD.MM.YYYY') < to_date('20140301', 'YYYYMMDD')
order by 2;
の節の処理順序は、Oracle では保証されていません。
where
. だから
value <> '0'
が最後の条件の前に実行されることは保証されません。 これはSQL Serverで大きな問題となる。 一つの解決策は
case
ステートメントを使用します。
select value1,to_date(value1, 'DD.MM.YYYY')
from variableindex
where value1 is not null and
value1 <> '0' and
creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
(case when value <> '0' then to_date(value1, 'DD.MM.YYYY') end) <
to_date('20140301', 'YYYYMMDD')
order by 2;
かなり醜いですが、あなたの問題を解決してくれるかもしれません。
関連
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQLクエリ「00904. 00000 - "%s: 無効な識別子".
-
[解決済み] Varchar は Sum 演算子では無効です。
-
[解決済み] FROM のサブクエリにはエイリアスが必要です。
-
[解決済み] MySQLクエリ GROUP BY 日/月/年
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] 月の最終日を知るには?
-
[解決済み] 日付から月の最終日を求めるには?
-
[解決済み] 月の最終日を計算する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】データベースへの「ネイティブ」SQL接続を使用するとはどういう意味ですか?
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み】BULK INSERTで「予期せぬファイルの終了」エラーが発生したROWを特定する?
-
[解決済み】SQL Server: 無効なカラム名
-
[解決済み] pg_restoreです。[archiver] 入力ファイルはテキスト形式のダンプであるように見えます。psql を使用してください。
-
[解決済み] DELETE文の競合REFERENCE制約
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] nvarchar 値 ... をデータ型 int に変換する際に、変換に失敗しました。
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] トリガーがコンパイルエラーで作成される