- ベストアンサー
オーバーフローが発生します
すみません、どなたか教えて下さい。 下記ソースで、日付の差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) なぜエラーになってしまうのか、どなたかアドバイスをお願い致します。
- みんなの回答 (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)) %>
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
CDateに与えた日付はどのようなものでしょう Date1,Date2を一度 CDateで日付型に変換しておき CDblかCSngなどで実数型にします これで変換した値が Long型で表現できる上限を超えていませんか 一度でやるならCLngをCDblまたはCSngなどに変更してみましょう
お礼
アドバイスありがとうございました。 根本的なミスをしておりました。 投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。 御世話になりました。
お礼
アドバイスありがとうございました。 根本的なミスをしておりました。 投稿した内容の後にCInt関数を使っており、そこで型を越えたようです。 御世話になりました。