2012-08-27 140 views
0

如上所述here后返回事件数据,该时区迁移后,这些更改将应用​​于FQL失败时区迁移

“events_timezone”迁移之前:

  • START_TIME和END_TIME领域是在太平洋时间UNIX时间戳。
  • 示例:'1341453600'代表2012年7月4日下午7点。
  • end_time总是被定义的。

'events_timezone' 迁移后:

  • START_TIME和END_TIME字段是ISO-8601格式的字符串。如果没有指定过
  • END_TIME可以为空。

我使用以下查询来查询用户社交网络中发生的每个事件的结束时间。

SELECT eid, end_time FROM event WHERE eid IN (SELECT eid FROM event_member WHERE start_time > '2012-08-27' AND uid IN (SELECT uid FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me()))) LIMIT 5000. 

此查询在时区迁移之前有效,但无法在启用时区迁移时返回任何数据。我高度怀疑这是,因为至少有一个事件的end_time为null。

我该如何克服这个问题,并获得大多数事件的end_dates? 我不介意为一个或两个事件设置一个空值,但我希望我的数据尽可能准确。

感谢

+0

您的怀疑似乎是正确的 - 如果我在未选择end_time列的情况下测试您的查询,我将获取数据,但不是当我保持它。我会说这是明确值得一个错误报告... https://developers.facebook.com/bugs – CBroe

回答

0

这似乎是把一个简单

AND end_time != '' 

的伎俩

现在该代码

SELECT eid, end_time FROM event WHERE eid IN (SELECT eid FROM event_member WHERE start_time > '2012-08-27' AND uid IN (SELECT uid FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me()))) AND end_time != '' LIMIT 5000 

不过,我现在还越来越少事件比以前。为了达到相同的结果,我将不得不编写第二个查询来获取没有结束时间的事件