ORACLEでORA-01861: リテラルが書式文字列と一致しません

投稿日:2017-09-08

ORA-01861: リテラルが書式文字列と一致しません

このエラー、ぶっちゃけ、意味が分からないところでもある。
日付の指定時に発生してて、原因が判明するまでに結構回り道をしました。
ネットで検索した情報だと、Windowsのレジストリだの、Date型の指定を確実にしろだのという情報ばかりで、今回の現象には当てはまらなかった。

結論としては、パラメータに、「YYYY/MM/DD」の部分だけ突っ込んで発生してました。
「HH:MM:SS」も一緒に定義する必要があるってことです。

そもそもは、Date型に対して、PGからパラメータを定義するところで発生してたんですが、まさかパラメータだとは思わず、SQLの検証を先にやってしまうという罠。
パラメータを1個ずつ確認して、ようやく日付部分に問題があることを確認。
SQL単体では問題なく実行できてたりしたから、余計に分かりづらかった。

SQLとしては、setparameterコマンドで日付をセットしても実行できてしまったので、まさかそこが原因とは気づけず・・・

で、試しに
「2017/07/01」
ではなく
「2017/07/01 00:00:00」
をパラメータに突っ込んだら動いた。

実際は、日付の範囲指定だったので、「2017/07/01 00:00:00」〜「2017/07/01 23:59:59」みたいな力技だけどw

参考にしたページ
ORA-01861: リテラルが書式文字列と一致しません

ストアドパラメータでの日付の受け渡しについて







-C#, ORACLE
-,

関連記事

ORACLEでCASE文を使用した時にORA-00932のエラーが出る

割と悩んだ・・・ 原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w select case name when ‘A’ then ‘あ’ when …

SQLのJOINの種類を理解する

これは分かりやすい。 https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ INNNER JOIN FULL OUTER J …

[C#]文字を繰り返したものを取得したい。

いちいちfor文とかで繰り返すのも効率が悪いなと思ってたので、処理を関数化・・・ ただ、共通関数として登録しないので、別のところで使いたい場合は、同じ関数が複数登録されちゃうことに・・・ 更には、思い …

C#で日数計算を行うのに、DateDiff関数を使う以外の方法。でも、ぶっちゃけ関数使った方が早いし正確だよ。

C#に限らず、プログラミング言語にはDateDiff相当の関数が用意されているはずです。 Excelでは普通に加減算が可能ですが。 そして、結論を言ってしまうと、そういう関数がある場合、それを使うべき …

Visual Studio 2008 が重い件について(暫定対応)

現象 とにかく重い。 重いと一言で言うけど、重いという内容は色々含んではいる。 起動が遅い スクロールすらカク付く 右クリックのコンテキストメニューが表示されるまで数秒待たされる 定義の移動に時間がか …


カテゴリー