- ベストアンサー
日付の差を求めるには
VB6.0で開発しています。 DBに時刻の列名「YEARMONTHDAY」「HOUR」(1~24)がNUMBER型として入っています。 DBより取得した「YEARMONTHDAY」と「HOUR」で日付の差を求めたいのですが, HOURに24の値がきた際,DATE型の範囲以上の為エラーになってしまいます。 なにか日付の差を求める良い方法があればご教授下さい。 (例) Dim pdtm_RecTime As Date Dim str_wk As String '// EOFまでループ Do Until objDynaset.EOF '// 記録日取得 str_wk = Format$(CStr(YEARMONTHDAY.Value) & Format(CStr(HOUR.value), "00") & "00", "0000/00/00 00:00") pdtm_RecTime = CDate(str_wk) ________________________________________________________________________________ 上記のPGだとHOURが24の場合にDateの範囲を超える為エラーになる。 '// 日付差チェック pVar_Diff = DateDiff("h", DateAdd("h", pInt_Hour, gDtm_GrpSDate), pdtm_RecTime) '// データがまだ存在する場合次のレコードに移動 If (objDynaset.EOF = False) Then objDynaset.MoveNext End If pInt_Hour = pInt_Hour + 1 Loop
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>str_wk = Format$(CStr(YEARMONTHDAY.Value) & Format(CStr(Hour.Value), "00") & "00", "0000/00/00 00:00") 日付/時間書式で文字列を作る pdtm_RecTime = CDate(str_wk) それを、日付時刻型に変換 ⇒結果[落ちる] のであれば str_wk = Format$(CStr(YEARMONTHDAY.Value), "0000/00/00") 日付で文字列を作る pdtm_RecTime = CDate(str_wk) それを、日付時刻型に変換 pdtm_RecTime = DateAdd("H", Hour.Value, pdtm_RecTime) それに時間を追加 してあげたら、単に24時間を足してくれると思いますよ。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
HOUR=24が「次の日の0時」を表すなら、 案a) HOUR=24の時は0とみなし、1日分DateAdd 案b) HOURから-1したもので時刻を組み立て、1時間をDateAddで追加 ――とか。