スタック オーバーフローの SQL 教祖様へ:
環境:オラクル
文字列を含むテーブル列で to_date 選択を実行できない理由を理解しようとしています。以下の例で、名前が Value の列を持つ tableZ には一連の文字列が含まれていることに注意してください。そのうちのいくつかは正しい形式です (たとえば、6/20/2010 00:00:00)。
テーブルZ
| Value |
| __________________ |
| 6/21/2010 00:00:00 |
| Somestring |
| Some Other strings |
| 6/21/2010 00:00:00 |
| 6/22/2010 00:00:00 |
以下の作品
SELECT To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') somedate
FROM tableX a, tableY b, tableZ c
WHERE Lower(a.name) = 'somedate'
AND a.id = b.other_id
AND b.id = c.new_id
これは次のようなものを返します(これは良いことです):
| somedate |
| __________________ |
| 21.06.2010 00:00:00 |
| 21.06.2010 00:00:00 |
| 22.06.2010 00:00:00 |
以下は動作しません
SELECT To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') somedate
FROM properties$aud a, template_properties$aud b, consumable_properties$aud c
WHERE Lower(a.name) = 'somedate'
AND a.id = b.property_id
AND b.id = c.template_property_id
AND To_Date(c.Value, 'MM/DD/YYYY HH24:MI:SS') IS NOT NULL
戻ってきます:
ORA-01861: リテラルがフォーマット文字列と一致しません
ここで何が欠けていますか?簡単なメモ:
...
AND b.id = c.template_property_id
AND To_Date(c.Value, 'DD.MM.YYYY HH24:MI:SS') IS NOT NULL
どちらも機能しません。
ありがとう!!
日付範囲を選択するために、c.value で日付 BETWEEN クエリを実行できるようにすることを目標としています。