我在MS访问表中有以下表达式:
IIf([End Date/Time]>="12/8/2016 6:00:00",1,0)
12/08/2016 18:15:00
会返回' 1'
12/08/2016 14:23:29
会返回' 0'
我假设这是AM / PM的问题。我尝试过#6; 00:00 AM'在我的表达中,但没有变化。
此外,我想更换' 12/8/2016'与昨天'但date()-1
似乎无法正常工作。
由于
答案 0 :(得分:2)
您的问题是威胁日期为字符串。始终使用 date ,没有例外。
此外,如果您的字段不是日期值,则必须将其转换。
因此,这将起作用:
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)
答案 1 :(得分:-1)
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定义为添加的'日'。
所以,把它们放在一起:
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"))