アプリ版:「スタンプのみでお礼する」機能のリリースについて

Oracle8iにおいて、日付1(date1)カラムは2007年6月5日12時25分20秒というようにvarchar2(14)で定義されており、時分秒でデータを持っています。
それを年月単位で件数をカウントしたいため、
to_dateで変換をかけているのですが(以下のSQL参照)、ORA-1830の
エラーが発生してしまいます。

以下のSQLをどのように修正すれば正しく結果が得られるのでしょうか?ご教示下さい。

select to_date(date1,'YYYYMMDD'),count(*)
from tableA
where date1 >= '20070501000000'
group by to_date(date1,'YYYYMMDD')

ちなみに、to_dateのところを、to_charにしてみると、ORA-1481が発生してしまいます。

A 回答 (1件)

不正な値を持つデータが存在するのでしょう。


年月日単位での集計が目的なら、DATE型に変換する必要はないので・・

select substr(date1,1,8),count(*)
from tableA
where date1 >= '20070501000000'
group by substr(date1,1,8)

で良いかと。
たぶん、不正なデータも含めて表示されるはずですから、結果を確認後、
ゴミ掃除してください。
ゴミが無くなれば、to_dateを利用したSQLでも処理できるはずです。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました。
提示頂いたSQLで正しい結果を得ることが出来ました。

それにしても、不正なデータが入っていたとは気が付きませんでした。

お礼日時:2007/06/14 01:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す