此检查日期时间字段是否正确?

时间:2016-04-17 16:19:21

标签: access-vba

我想知道我是否在访问的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)。但不知怎的,我仍然最终在if的其他部分,所以我猜我要么是对“Datum”变量做错了,要么我在assignement和if之间有问题(虽然我什么也看不见)

因此我的问题是我是否正确检查日期/时间字段?因此,只有> = 2015年7月16日,检查Dauer是否超过6小时?

2 个答案:

答案 0 :(得分:0)

最好使用CDate()DateSerial()将比较值显式转换为DateTime值。

对于CDate(),字符串应采用美国格式(mm / dd / yyyy)或ISO格式(yyyy-mm-dd)。

If Datum >= CDate("2015-07-16")
如果您的比较日期也是可变的,那么

DateSerial()是最好的,但也可以与常数一起使用。

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

答案 1 :(得分:0)

首先,您应该提供要与数据类型Date:

的变量或常量进行比较的值
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