私はinsert into Store values(1, '04/04/2012 13:35 PM');
を使用していくつかのデータを挿入しようとすると、私はこのエラーSQL Error: ORA-01843: not a valid month
が発生し、今
CREATE TABLE Store (id number(11) primary key not null, opening_time timestamp CHECK (EXTRACT(HOUR FROM opening_time) > 8 || NULL));
このクエリを使用してテーブルを作成しました。
私は間違っているとは何ですか?遭遇したSQLエラー:ORA-01843:無効な月
答えて
'04/04/2012 13:35 PM'
は文字列です。書式マスク(ノートとしてNLS_DATE_FORMAT
セッションパラメータの値を使用してDATE
列に挿入するときにOracleが非日付リテラルに暗黙のTO_DATE(string_value, format_mask)
を行います
:これはセッションパラメータであり、クライアントに属し、それグローバル設定ではありません)。非日付のリテラルがこのフォーマットにマッチすれば、それはうまくいくでしょう。もしそうならないと、NLS_DATE_FORMAT
が変更された場合、直ちに破棄されます。動作していたコードは誰もコードを変更しませんでした)。
クエリを使用して、現在のNLS_DATE_FORMAT
を見つけることができます。
SELECT VALUE
FROM NLS_SESSION_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';
明示的に正しい書式マスクでTO_DATE()
を使用するか(すなわちDATE '2012-04-04'
またはTIMESTAMP '2012-04-04 13:35'
)リテラルのANSI/ISOの日付を使用することをお勧めします。あなたが行うことができます
:
INSERT INTO STORE (id, opening_time)
VALUES(1, TO_DATE('04/04/2012 13:35', 'DD/MM/YYYY HH24:MI');
(時間のコンポーネントは24時間制にすでにあるとして、あなたがAM/PM
を必要としない)
または
INSERT INTO STORE (id, opening_time)
VALUES(1, TIMESTAMP '2012-04-04 13:35:00');
( Oracleが暗黙的に日付に変換するANSI/ISOタイムスタンプ・リテラルを使用)
テーブルに主キーの値を挿入する必要はありません。それは自動生成されます。などTO_DATE
機能を使用して、日付のフォーマットを提供しよう:
insert into Store values(to_date('04/04/2012 13:35 PM','DD/MM/YYYY HH:MI AM'));
SQL Error: ORA-01843: not a valid month
'04/04/2012 13:35 PM'
が文字列なく日付です。明示的に文字列を日付に変換するには、常にTO_DATEを使用する必要があります。 暗黙のデータ型変換に頼ることは決してありません。あなたのロケール固有のNLS設定に依存するのは幸運かもしれません。ただし、NLSの設定が異なる場合は機能しません。したがって、TO_DATEを使用して、適切な形式のマスクを使用してリテラルを日付に変換してください。
単にDATEデータ型を使用して、datetime値、タイムスタンプを使用する必要はありませんを見てみます。秒までの精度まで保持できます。
CREATE TABLE Store (id number(11) primary key not null,
opening_time timestamp
CHECK (EXTRACT(HOUR FROM opening_time) > 8 || NULL));
insert into Store
values(1, TO_DATE('04/04/2012 13:35 PM', 'DD/MM/YYYY HH:MI', 'nls_date_language=ENGLISH'));
また固定フォーマットを使用していますので、それが独立したNLSあるANSI date/timestamp literalを使用することができます。
DATE '2012-04-04'
または
TIMESTAMP '2012-04-04 13:35:00'
単純な標準SQLに準拠したリテラルではなく、TO_DATE/TO_TIMESTAMPを使用してOracleのすべてのユーザーがなぜですか? 'DATE '2012-04-04''または' TIMESTAMP' 2012-04-04 13:35:00''はNLS設定に依存しません。 – dnoeth
@dnoeth私もANSIの日付/タイムスタンプリテラルを提案します。ここで私の意図は、OPにデータ型を知らせることです。とにかく、いつもより多くの情報を追加するのは良いことです。 –
ストア値(1、'04 -APR-2012午後01時35分PM ')に挿入します。
これは私のために働く。
'NLS_DATE_FORMAT'セッション・パラメータの値をフォーマット・マスクとして使用して、日付以外のリテラルにDATE列に暗黙の' TO_DATE(string_value、format_mask) 'を挿入します。日付以外のリテラルがこの形式と一致する場合、それは動作します(そうでない場合はそうではありません)が、パラメータは**クライアントの**セッションに属し、ユーザー間で一貫性があるとは限りません。 – MT0
データ形式にto_date関数を使用することをお勧めします。 あなたはそれがする場合は:あなたはofficial documentationにここで見つけることができます。この機能について
insert into Store
values(1, to_date('04/04/2012 13:35', 'DD/MM/YYYY HH24:mi'));
詳細を。
- 1. 構文エラー:遭遇しました ";"
- 2. urllib2.HTTPErrorに遭遇しました:HTTPエラー400:不正なリクエスト
- 3. 私はまだ遭遇した最も奇妙なエラー
- 4. Tomcatが無限ループに遭遇しました
- 5. 無効な行に遭遇したらjavascriptの実行を停止しますか?
- 6. 存在しない画像に遭遇した場合のループブレイク
- 7. NumberFormatExceptionに遭遇する
- 8. 無効なSQL構文エラー
- 9. あなたが遭遇した最も有用なStringヘルパーは何ですか?
- 10. LinkedIn OAuth2認証サーバーが予期しない条件に遭遇しました
- 11. 質問私はこのコードで遭遇したJSコード
- 12. 私はPHPで問題に遭遇してきたPHP
- 13. 最後に遭遇した8amのタイムスタンプを見つけるか?
- 14. 例外「System.InvalidProgramException:JITコンパイラが内部制限に遭遇したが、」
- 15. Webサービスからの不正な認証スキームに遭遇しました
- 16. エラー・レポート - ORA-00900:無効なSQL文
- 17. SQL Oracle ORA-00904:無効なインデント化エラー
- 18. SQL Serverエラー無効な列名 'NaN'
- 19. MS-SQLの列の無効なエラー
- 20. refcursorで無効なSQL文エラー
- 21. タイプは「GUIDは、」私はこのコード行でこのエラーに遭遇してい
- 22. なぜfreadが "Bad file descriptor"に遭遇するのですか?
- 23. 無効なエラー:Recaptchaのrefererが無効
- 24. QAudioOutputは常にUnderrunErrorに遭遇します
- 25. は、Rは、私が遭遇している変数
- 26. エラー:「無効なバイナリオペランド」
- 27. 無効なCSSエラー
- 28. SQL Server 2005で無効なオブジェクト名エラーが発生しました
- 29. 私は、私はC++コードに遭遇してきた文字列と配列
- 30. Ruby CSV.parse引用符で遭遇したときに非常にピックアップ
[なぜこの日付をsqlを使用してテーブルに入力できないのですか?](http://stackoverflow.com/questions/35149206/why-cant-i-enter-this-date-into-a -table-using-sql) – MT0