単純なOracleクエリ:リテラルがフォーマット文字列と一致しません
-
28-10-2019 - |
質問
Oracleで簡単な関数を実行したい。署名は次のように定義されています。 ジェネラコディセタグプレ
次の方法で実行できるはずです: ジェネラコディセタグプレ
しかし、「newcaselistforvalidation( '2010-01-01'、 '2011-01-01'、100)」と入力すると、次のようになります。 ジェネラコディセタグプレ
少しググったのですが、正しい形式で日付を入力するのがわからないようです。誰か助けてもらえますか?
解決
OracleでNLS_PARAMETERSを照会すると、DBが日付を受け入れる形式を確認できます。
通常、to_date()関数を使用します: ジェネラコディセタグプレ
英国で日付を入力します。
他のヒント
to_date()関数の代わりに、DATEまたはTIMESTAMPリテラルにANSI標準形式を使用することもできます。 ジェネラコディセタグプレ
日付と時刻は常にISOルール(YYYY-MM-DDおよび時刻の24時間形式)を使用して指定されます
これは、他の多くの(標準準拠の)DBMSでも機能します。
NLS_PARAMETERS 設定の特定の値に依存しないことをお勧めします。 これにより、関数が別の NLS_DATE_FORMAT で環境内で壊れますされます。
上記の回答で提案されているように、関数で日付の書式を明示的に指定します ジェネラコディセタグプレ
INSERT INTO tblDate(dateStart) 値('20 -JUN-2013 '); 月の整数を文字列に変更すると、「DD-MON-YYYY」は、日付識別子を前に付けることなく、有効なデータ文字列として機能します。