2016-04-17 64 views
0

我想知道如果我在訪問的vb部分正確使用日期/時間字段。 我有一個日期時間字段,例如2016年4月14日正在站。 如果持續時間以秒爲單位的「Dauer」大於6小時,那麼其他事情會發生。檢查日期時間字段是否正確?

Datum和Dauer是通過表中的sql語句(select)直接賦值的變量。然後我使用它們(DAtum類型爲Date/Time和Dauer類型爲int)。

If (Datum >= "16.07.2015" And Dauer > (6 * 60 * 60)) Then ' 6 Stunden 

就像上面提到的那樣,我的情況是2016年4月14日,持續時間> 6小時(例如6.19)。但不知何故,我仍然最終在其他部分如果所以我猜或者我做了「Datum」變量的錯誤,或者我在分配和if之間存在問題(雖然我什麼都看不到) 。

因此,我的問題是我這樣正確檢查日期/時間字段?因此,只有在2015年7月16日以前,檢查Dauer是否大於6小時?

回答

0

最好使用CDate()DateSerial()將您的比較值顯式轉換爲DateTime值。

對於CDate(),字符串應採用US格式(mm/dd/yyyy)或ISO格式(yyyy-mm-dd)。

If Datum >= CDate("2015-07-16") 

DateSerial()是最好的,如果你比較日期是可變的爲好,但也可與常量一起使用。

If Datum >= DateSerial(2015, 7, 16) 
+0

所以它可能是在現實中轉換問題? (因此,他轉換它並不總是正確的?) – Thomas

0

首先,你應該提供比較數據類型日期的變量或常量的值:

Dim CheckDatum As Date 
Dim CheckDauer As Date 
CheckDatum = DateSerial(2015, 7, 16) 
CheckDauer = TimeSerial(6, 0, 0)  

' or: 

Const CheckDatum As Date = #07/16/2015# 
Const CheckDauer As Date = #06:00:00# 

然後

If Datum >= CheckDatum And Dauer > CheckDatum Then 

' or: 

If DateDiff("d", CheckDatum, Datum) >= 0 And DateDiff("s", CheckDauer, Dauer) > 0 Then 
相關問題