日期计算,在单独的列中包含完整日期

时间:2016-02-19 04:54:08

标签: ms-access

我正在尝试使用我的月份和年份对项目的最近3个月进行查询,如下所示:

YEAR_ PERIOD
2014年5月
2013年6月6日
2013年11月11日
2011年6月
2009年2月

查询需要始终从当前月份和年份开始。我尝试过使用DateAdd(),DateSerial()和DateDiff()。每当我尝试使用月(现在() - 3)我得到2而不是11。

2 个答案:

答案 0 :(得分:0)

添加或减去整数和日期只会添加或减去日期中的天数。因此 // calling service gateway API NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: "field",@"value", nil]; [self getDataWithObject:dict onAPI:KGet_Preferences withController:(UIViewController*)controller :^(BOOL success, id response, NSError *error) { if( success ) { NSMutableDictionary *data = [[response valueForKey:@"data"] valueForKey:@"preferences"]; compilationHandler(success,data,error); } else { compilationHandler(success,nil,error); } }]; 导致2016-02-15(在此发布时为2016-02-18)。那显然仍然是2月 - 因此你的结果是两个月。

尝试Now() - 3。在这里,我们将Month(DateAdd("m", -3, Now))个月添加到当前日期,然后获得结果月份。根据今天的日期,将导致11。

答案 1 :(得分:0)

我明白了。

DateDiff("m",CDate(Format([PERIOD] & "/" & [YEAR_],"mm/yyyy")),Now()) 

这取了两个字段并使它们成为一个日期。然后我从这个月和两个日期之间的月份中获得了差异。然后我将标准设置为< = 3。

<强>附录

可以简化为:

DateDiff("m",CDate([PERIOD] & "/" & [YEAR_]),Date()) 

但是,一般情况下,如果可以避免使用日期,则不应对日期使用字符串处理,并且很容易:

DateDiff("m",DateSerial([YEAR_],[PERIOD],1)),Date())