• ベストアンサー

オーバーフローが発生します

すみません、どなたか教えて下さい。 下記ソースで、日付の差Date1とDate2の間隔が長くなると「Number:6,Description:オーバーフローしました。」というエラーが出てしまいます。 日付の間隔は30日くらいでもエラーになります。 atime = CLng(DateDiff("n",CDate(Date1),CDate(Date2))) '60で割って100倍後、少数第1位を4捨5入する atime=atime / 60 * 100 atime=Fix(atime + 0.5) なぜエラーになってしまうのか、どなたかアドバイスをお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

お世話になります。 ASP でしょうか? > 「Number:6,Description:オーバーフローしました。」 これは DateDiff 関数を実行しているところ? 以下に 30 日以上の 日付間隔を持つ値で DateDiff を実行しましたが特に Overflow は起こりません。 CDate 関数実行あたりがあやしいです。 CDate 関数に渡している値が日付に確かに型変換できるものかどうか、 Response.write 等を使って確認してみてはいかがでしょうか。 以下、検証につかった ASP です。 <%@ Language=VBScript %> <% Dim date1 Dim date2 date1 = #10/1/2007# '2007/10/01 date2 = #12/1/2007# '2007/12/01 ' 日単位で時間の間隔を求める Dim days days = DateDiff("d", date1, date2) ' 分単位で時間の間隔を求める Dim minutes minutes = DateDiff("n", date1, date2) Response.write("日:" & CStr(days) & "<br>") Response.write("分:" & CStr(minutes)) %>

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vblr7/html/vafctDateDiff.asp
user10
質問者

お礼

アドバイスありがとうございました。 根本的なミスをしておりました。 投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。 御世話になりました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

CDateに与えた日付はどのようなものでしょう Date1,Date2を一度 CDateで日付型に変換しておき CDblかCSngなどで実数型にします これで変換した値が Long型で表現できる上限を超えていませんか 一度でやるならCLngをCDblまたはCSngなどに変更してみましょう

user10
質問者

お礼

アドバイスありがとうございました。 根本的なミスをしておりました。 投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。 御世話になりました。

関連するQ&A