sql >> データベース >  >> RDS >> Oracle

SQLを使用してこの日付をテーブルに入力できないのはなぜですか?

    Oracleは暗黙のTO_DATEを実行します DATEに挿入するときの日付以外のリテラル NLS_DATE_FORMATの値を使用する列 フォーマットマスクとして。日付以外のリテラルがこの形式と一致する場合は機能します(一致しない場合は機能しません)。ただし、NLS_DATE_FORMAT 変更されるとすぐに壊れます(機能していたコードは機能しないため、デバッグするのは非常に面倒ですが、誰もコードを変更しません)。

    現在のNLS_DATE_FORMATを確認できます クエリで:

    SELECT VALUE
    FROM   NLS_SESSION_PARAMETERS
    WHERE  PARAMETER = 'NLS_DATE_FORMAT';
    

    TO_DATEを明示的に使用することをお勧めします 正しいフォーマットマスクを使用するか、ANSI日付リテラルを使用します(例:DATE '2014-12-01'

    insert into employees_table
    values(
      05,
      'Sophie',
      'Kuchinskey',
      '[email protected]',
      105,
      5000000,
      60,
      TO_DATE( '20-sep-1994', 'DD-Mon-YYYY' )
    );
    

    または、ロケール/言語に依存しないANSI形式を使用します:

    insert into employees_table
    values(
      05,
      'Sophie',
      'Kuchinskey',
      '[email protected]',
      105,
      5000000,
      60,
      DATE '1994-09-20'
    );
    


    1. MySQLdbモジュールのロード中にエラーが発生しました'mysqlclientまたはMySQL-pythonをインストールしましたか?'

    2. MySQL INSERT IF(カスタムifステートメント)

    3. PHP経由でPostgresに接続できませんが、コマンドラインと別のマシンのPgAdminから接続できます

    4. 意見を求める:すべてのテーブルに対して1つのシーケンス