我使用FQL来从android上的Facebook获取事件信息。
我需要参加今天前一周和今天一周后的活动。
我已经尝试了下一个代码,但似乎DATEADD
是FQL上不存在的函数:
final Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query",
"SELECT eid, update_time, start_time, end_time, creator, description, name, location " +
"FROM event " +
"WHERE eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status != 'declined') " +
"AND start_time<DATEADD(day,7,now()) AND start_time>DATEADD(day,-7,now())");
final String response = "{\"data\":" + _facebook.request(params) + "}";
final JSONObject json = Util.parseJson(response);
final JSONArray data = json.getJSONArray("data");
我可以使用什么代替DATEADD
?
我发现的另一个问题是他们在facebook API上说start_time
字段是一个字符串,这本身就很奇怪......
答案 0 :(得分:1)
final Bundle params = new Bundle();
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_MONTH, 7);
calendar = Calendar.getInstance();
final String startTime = sdf.format(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, -7);
final String endTime = sdf.format(calendar.getTime());
params.putString("method", "fql.query");
params.putString("query",
"SELECT eid, update_time, start_time, end_time, creator, description, name, location " +
"FROM event " +
"WHERE eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status != 'declined') " );
+ "AND start_time<'" + startTime + "' AND start_time>'" + endTime + "'");
答案 1 :(得分:0)
但似乎DATEADD是FQL上不存在的函数
不,它没有。因此,请在您的应用中自行计算相应的日期值,并将其放入查询中。
我发现的另一个问题是他们在facebook API上说start_time字段是一个字符串,这本身就很奇怪......
那有什么“怪异”的? ISO-8601日期不能表示为数值,并且为此使用特殊的“日期”数据类型在使用FQL时不会带来任何好处。