在特定时间范围内查询事件的FQL事件表
问题描述:
我使用FQL从android上的Facebook获取事件信息。在特定时间范围内查询事件的FQL事件表
我需要采取的事件是今天之前的一周和今天之后的一周。
我已经尝试了下面的代码,但似乎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
领域是一个字符串,它是由本身怪异......
答
好了,我已经找到了解决办法:
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 + "'");
答
但似乎DATEADD是没有按”功能t存在于FQL上
不,它没有。因此,请在您的应用中自己计算适当的日期值,并将其放入查询中。
另一个问题,我发现的是,他们说对Facebook的API,该START_TIME字段是一个字符串,它本身是奇怪...
什么是“怪异”的看法? ISO-8601日期不能表示为数值,并且为此使用特殊的“日期”数据类型在使用FQL时不会带来好处。
什么应该是正确的查询? – 2012-08-14 07:35:57
_“因此,在您的应用程序中自己计算适当的日期值,并将其放入查询中。”_ – CBroe 2012-08-14 08:14:10
是的,但是如何?我知道如何创建与日期相关的类并获取当前日期前后的当前日期和日期。这些数据在FQL查询中应该改变什么?不管我尝试过什么,没有一个类做了一个正在工作的查询(所有都发生了错误)。问题是关于FQL查询。我不需要脸书给我所有的事件,只有那些有趣的应用程序。我知道我可以取得所有,然后检查时间,但这不是我需要做的。 – 2012-08-14 09:00:59