大于/小于 date/time table 表达式

Greater than / Less than date/time table expression

我在 MS-access table 中有以下表达式:

IIf([End Date/Time]>="12/8/2016 6:00:00",1,0)

12/08/2016 18:15:00 将 return 为“1”,但是 12/08/2016 14:23:29 return 是 '0'

我假设这是 AM/PM 的问题。我尝试在我的表达式中输入“6:00:00 AM”,但没有任何变化。

此外,我想用 'yesterday' 替换“12/8/2016”,但 date()-1 似乎不起作用。

编辑:我发现时间需要为“06:00:00”。产生正确的日期。仍然不知道如何自动获取它(即昨天在 06:00)

谢谢

2 件事。首先,我相信您需要将字符串转换为日期时间。我认为你会得到不稳定的结果,因为它试图将它们作为不同的格式进行比较。像字符串或数字。要将格式设置为日期时间,您可以使用格式功能:

Format("12/8/2016 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm")

其次,要添加日期,您需要使用 DateAdd 函数。

DATEADD('d',-1,"12/8/2016 6:00:00AM")

'd' 将 -1 定义为添加的 'day'。

所以,把它们放在一起:

DATEADD("d",-1,Format("12/8/2016 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm"))

最后,如果你想要昨天的滚动,而不是永远的 12/7/2016(因为如果是这样的话你会只使用那个日期),你需要用这个函数得到今天的日期:

Date()

因此,将其加入我们的组合中,我们得到:

DATEADD("d",-1,Format(DATE() & " 6:00:00AM", "mm/dd/yyyy hh:nn:ss am/pm"))

您的问题是您将日期威胁为字符串。始终使用 日期,没有例外。

此外,如果您的字段不是日期值,则必须对其进行转换。

因此,这将起作用:

IIf(DateValue([End Date/Time]) >= #2016/12/8 6:00:00#, 1, 0)

还有这个:

IIf(DateValue([End Date/Time]) >= Date() - 1, 1, 0)

还有这个:

IIf(DateValue([End Date/Time]) >= DateAdd("d", -1, #2016/12/8 6:00:00#), 1, 0)