プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

HOUR=24が「次の日の0時」を表すなら、


案a) HOUR=24の時は0とみなし、1日分DateAdd
案b) HOURから-1したもので時刻を組み立て、1時間をDateAddで追加
――とか。
    • good
    • 0

>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時間を足してくれると思いますよ。
    • good
    • 0

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