
使用環境
WINXPPro WIN2003SERVER Oracle10g
データベースに数値型の日付があるのですが、これを日付型にして表示しようとすると「ORA-01843: 指定した月が無効です」となってしまいます。
select
B01 as 番号,B02 as 注文先,
to_DATE(to_char(B10, '000000'),'RRMMDD') as 納期,
B03 as 品名,B04 as 型式,B05 as 数量 FROM TYUMON
結果、数件は表示されます
多分、数値が6桁になっているデータだと思います
940101
990201
です。
検索してみて
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
を実行しても結果は同じでした。
よろしくお願いします
No.4ベストアンサー
- 回答日時:
B13をすべてチェックしてみてください。
恐らく、年月日にマッチしないデータがあるんだと思います。
例)940101→1994年01月01日 ○
940000→1994年00月00日 ×
940132→1994年01月32日 ×
以下、試した結果です。
SQL> SELECT TO_DATE(TO_CHAR(940101, '000000'),'RRMMDD') FROM DUAL ;
TO_DATE(
--------
94-01-01
SQL> SELECT TO_DATE(TO_CHAR(940131, '000000'),'RRMMDD') FROM DUAL ;
TO_DATE(
--------
94-01-31
SQL> SELECT TO_DATE(TO_CHAR(940132, '000000'),'RRMMDD') FROM DUAL ;
SELECT TO_DATE(TO_CHAR(940132, '000000'),'RRMMDD') FROM DUAL
*
行1でエラーが発生しました。:
ORA-01847: 月単位の日付は1から月末日の間で指定する必要があります
SQL> SELECT TO_DATE(TO_CHAR(940000, '000000'),'RRMMDD') FROM DUAL ;
SELECT TO_DATE(TO_CHAR(940000, '000000'),'RRMMDD') FROM DUAL
*
行1でエラーが発生しました。:
ORA-01843: 指定した月が無効です。
如何でしょうか。
この回答への補足
ありがとうございます。
データ
B02 B13
0011 921
0014 0
SELECT TO_DATE(TO_CHAR(B13,'000000'),'RRMMDD'),B02 FROM NSEKIB where B02 = 0014
B02 = 0011(※)
TO_DATE( B02
-------- ----
00-09-21 0011
B02 = 0014(※)
行1でエラーが発生しました。:
ORA-01843: 指定した月が無効です
もう少し、詳しく見てみますが、おそらくB13が'0'のデータがエラーになっているようです。
もう少し、詳しく見てみましたらやはりエラーになります。
今度は'0'のデータを削除しました(テストデータなので)が
途中まではうまくいきますがエラーが出てしまいます。
SELECT TO_DATE(TO_CHAR(B13,'000000'),'RRMMDD'),B02 FROM NSEKIB
TO_DATE( B02
-------- ----
97-03-30 0078
98-03-27 0079
98-03-24 0080
98-03-24 0081
98-02-27 0082
98-02-27 0083
98-02-27 0084
98-02-27 0085
98-02-27 0086
98-02-27 0087
ERROR:
ORA-01843: 指定した月が無効です・
1605行が選択されました。
ちなみにSELECT TO_DATE(TO_CHAR(B13,'000000'),'RRMMDD'),B02 FROM NSEKIB order by B13
order by B13をつけると、すべてエラーになります。
ERROR:
ORA-01843: 指定した月が無効です・
No.3
- 回答日時:
度々すみません。
下記の2コマンドの結果を教えて頂けないでしょうか。
DESCRIBE NSEKIB
※見たいのはB13の詳細なタイプなのですが。
SELECT B13 FROM NSEKIB WHERE B02 = 0096
お願い致します。
この回答への補足
早速、ありがとうございます。
DESCRIBE NSEKIB
名前 NULL? 型
------ -------- -------------
BKEY NOT NULL CHAR(11)
B01 CHAR(7)
B02 CHAR(4)
B03 VARCHAR2(32)
B04 VARCHAR2(50)
B05 NUMBER(6)
B06 VARCHAR2(20)
B12 NUMBER(10)
B13 NUMBER(6)
B14 NUMBER(6)
です。
よろしくお願いします。
No.2
- 回答日時:
一点確認させてください。
> 結果、数件は表示されます
> 多分、数値が6桁になっているデータだと思います
これは、6桁はすべて表示され、それ以外は表示されないと言う事でしょうか。
また、上記とした場合、表示されない時はどういったデータなのでしょうか。
例)2000/01/01 は 000101 ?
この回答への補足
早速ありがとうございます。
表示されないのはどんなものか調べていましたが、数値を指定するとうまくいきますが、データ上ではエラーになります。
そこでwhere文で行を指定してみましたらすべてエラーになります。(B02:NO)
SQL> SELECT TO_DATE(TO_CHAR('940101'),'RRMMDD'),B02 FROM NSEKIB where B02 = 0096
TO_DATE( B02
-------- ----
94-01-01 0096
SELECT TO_DATE(TO_CHAR(B13,'000000'),'RRMMDD'),B02 FROM NSEKIB where B02 = 0096
ERROR:
ORA-01843: 指定した月が無効です。
です。
B13は数値型で'940101'になっています。
ちなみに
SQL> SELECT TO_DATE(TO_CHAR('101'),'RRMMDD'),B02 FROM NSEKIB where B02 = 0096
TO_DATE( B02
-------- ----
00-01-01 0096
でOKです。
No.1
- 回答日時:
数値が6桁じゃなくて、8桁なのではないでしょうか。
確認してみてください。環境は若干違いますが、下記の3通りのクエリを試した結果を記載します。
3つ目の関数であれば、うまくいくような気がします。
SQL> SELECT TO_DATE(TO_CHAR(940101,'000000'),'RRMMDD') FROM DUAL ;
TO_DATE(
--------
94-01-01
SQL> SELECT TO_DATE(TO_CHAR(19940101,'000000'),'RRMMDD') FROM DUAL ;
SELECT TO_DATE(TO_CHAR(19940101,'000000'),'RRMMDD') FROM DUAL
*
行1でエラーが発生しました。:
ORA-01841: (周)年は-4713と+9999の間の0以外の数字を指定する必要があります
SQL> SELECT TO_DATE(TO_CHAR(19940101,'00000000'),'RRMMDD') FROM DUAL ;
TO_DATE(
--------
94-01-01
この回答への補足
早速、返信ありがとうございます。
まず、桁数は6桁になっています。
3つ目の関数で実行しましたら、良い結果になりました。
SELECT TO_DATE(TO_CHAR(19940101,'00000000'),'RRMMDD') FROM DUAL ;
しかし、実際のデータではエラーとなってしましました。
質問で「多分、数値が6桁になっているデータだと思います」
と言いましたが、データを見ると6桁になっているのに途中でエラーとなっているようです。
940125
940127
回答中すいません。
どうやら、データの中に日付では表せないデータがあるようなのでもう一度このデータをしっかりさせてから質問し直します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) Excelマクロでセルに値が入力されたら実行する 5 2023/08/06 11:03
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
このQ&Aを見た人はこんなQ&Aも見ています
-
ORA-01858: 数値を指定する箇所に数値以外の文字が指定されています
Java
-
PL/SQLでのTO_DATEの時間取得について
その他(プログラミング・Web制作)
-
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
-
4
TO_DATE関数について
Oracle
-
5
単一グループのグループ関数ではありません。
Oracle
-
6
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
7
Statement ignored というエラー
Oracle
-
8
INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい
その他(データベース)
-
9
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
10
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
11
Viewにインデックスは張れますか?
Oracle
-
12
PL/SQLでログを確認したい。
Oracle
-
13
CASE文のエラーについて
Oracle
-
14
はじめまして!
Oracle
-
15
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
16
to_date使用時に発生するエラーの対処方法について
Oracle
-
17
SQLPLUSで結果を画面に表示しない
Oracle
-
18
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
19
Oracle 8i コンマ(,)を含むデータをinsertしたい
その他(データベース)
-
20
PL/SQLで@ファイル名が反応しません
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
PCC-S-02201エラーの対処を教え...
-
シェルスクリプトでオラクルの...
-
はじめまして!
-
ExcelVBAからOracleストアド実行
-
「ORA-00907: 右カッコがありま...
-
ACCESSでパススルークエリにパ...
-
PL/SQL PLS-00103エラーについて
-
CASE文のエラーについて
-
ORA-06502のエラー
-
ストアドファンクションの実行
-
オラクル致命的なエラー(provi...
-
HAVING句でのBETWEEN演算子
-
DDLトリガーの作成にて
-
DATABSE LINKについて
-
インポート時のエラーについて
-
エラーコードについて
-
オラクルでエラー「ORA-00052」...
-
データベースのカラムの型がCHA...
-
ビューが作成できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
はじめまして!
-
ORA-01843: 指定した月が無効で...
-
PL/SQL PLS-00103エラーについて
-
シェルスクリプトでオラクルの...
-
PL/SQLのコンパイルエラーにつ...
-
PCC-S-02201エラーの対処を教え...
-
「ORA-00907: 右カッコがありま...
-
ORA-14459: GLOBALキーワードが...
-
ORA-06502のエラー
-
PL/SQLでPLS-00201のエラー
-
DATABSE LINKについて
-
sqlのエラーハンドリングについ...
-
SQLLOADER
-
無効なSQL文の具体例を教えてく...
-
PL/SQLによるCREATE TABLE後のI...
-
ビューが作成できない
-
ストアドファンクションの実行
-
pro*c で pl/sql に変数を渡す...
おすすめ情報