-1

我使用 FQL 从 android 上的 facebook 获取事件信息。

我需要参加今天前 1 周和今天后 1 周的活动。

我尝试了下一个代码,但它似乎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字段是一个字符串,这本身就很奇怪......

4

2 回答 2

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 + "'");
于 2012-08-15T14:10:16.690 回答
0

但似乎 DATEADD 是 FQL 上不存在的函数

不,它没有。因此,在您的应用程序中自己计算适当的日期值,并将其放入查询中。

我发现的另一个问题是他们在 facebook API 上说 start_time 字段是一个字符串,这本身就很奇怪......

这有什么“奇怪”的?ISO-8601 日期不能表示为数值,为此使用特殊的“日期”数据类型在使用 FQL 时不会带来任何好处。

于 2012-08-13T13:55:30.247 回答