SQL テーブルの日付を更新しようとしています。Peoplesoft オラクルを使用しています。このクエリを実行すると:
Select ASOFDATE from PASOFDATE;
私は2012年4月16日を取得します
このクエリを実行してみました
UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';
しかし、それは機能していません。
日付を希望の日付に変更する方法を知っている人はいますか?
SQL テーブルの日付を更新しようとしています。Peoplesoft オラクルを使用しています。このクエリを実行すると:
Select ASOFDATE from PASOFDATE;
私は2012年4月16日を取得します
このクエリを実行してみました
UPDATE PASOFDATE SET ASOFDATE = '11/21/2012';
しかし、それは機能していません。
日付を希望の日付に変更する方法を知っている人はいますか?
これは、無効な月の値や、数値が予期されるときに数値以外の文字など、日付形式に関するエラーが発生しているという前提に基づいています。
データベースに格納されている日付には形式がありません。日付を照会すると、クライアントは表示用に日付をフォーマットしています4/16/2011
。通常、日付の選択と更新には同じ日付形式が使用されますが、この場合は異なるように見えます。そのため、クライアントは SQL*Plus よりも複雑なことを行っているようです。
更新しようとすると、デフォルトの日付形式モデルが使用されます。表示方法から、 であると想定していますがMM/DD/YYYY
、そうではないようです。それが何であるかを知ることはできますが、デフォルトまたは暗黙の形式モデルにまったく依存しない方がよいでしょう。
それが問題であるかどうかにかかわらず、常に日付モデルを指定する必要があります。
UPDATE PASOFDATE SET ASOFDATE = TO_DATE('11/21/2012', 'MM/DD/YYYY');
時刻コンポーネントを指定していないため、真夜中であってもすべての OracleDATE
列に時刻が含まれているため、日付リテラルを使用することもできます。
UPDATE PASOFDATE SET ASOFDATE = DATE '2012-11-21';
列名は含まれていないことを示していますが、現在の値に時間が含まれていないことを確認する必要があります。
この SQL が peoplesoft 固有のコード (アプリケーション エンジン、SQLEXEC、SQLfetch など) で使用されている場合は、%Datein metaSQL を使用できます。Peopletools は、日付を、アプリケーションが実行されているデータベース プラットフォームで受け入れられる形式に自動的に変換します。
この SQL がクエリ アナライザー (SQLDeveloper、SQLTools など) からバックエンド更新を実行するために使用されている場合、使用されている日付形式が間違っています。Oracle は、日付形式が DD-MMM-YYYY であることを想定しています。ここで、MMM は JAN、FEB、MAR などの可能性があります。