我正在尝试对有日期字段的表执行查询,并且我想查询一系列值 where 子句如下所示:
[db executeQuery:@"select * from test where myDate BETWEEN date('now','-7 days') and date('now')"];
但这似乎不起作用:(
如果您使用DATETIME
带有表声明的列,您可以这样做:
[db executeQuery:@"SELECT * FROM test WHERE myDate BETWEEN ? and ?", [[NSDate dateWithTimeInterval:-86400*7 sinceDate:[NSDate date]], [NSDate date]];
请注意,这-86400
是一天中的秒数,负数表示“前几天”,就像您的问题一样。
另请注意,BETWEEN
语法包括您设置的日期的第二个。WHERE myDate > ? and myDate < ?
如果您需要非包容性匹配,请使用。