Bigquery.jobs()。query为timestamp列返回纪元时间1.295353708E9

时间:2014-10-31 04:18:47

标签: java google-bigquery

Bigquery.jobs().query().execute返回时间戳的纪元时间,该纪元时间包括带有字母数字值尾部的点(1.295353708E9),因此将该值转换为Java时间戳失败;

Object v = checkNullAndGetColumnValue(columnIndex);
long epoch = Long.parseLong(v.toString());
String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000));

返回的值1.295353708E91295353708相同,但不确定bq web UI呈现它的最佳方法是什么。

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:3)

这应该有效:

 long epoch = Double.valueOf("1.295353708E9").longValue();
 String date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss")
         .format(new Date (epoch*1000));

使用给定的示例值,date字符串将解析为01/18/2011 21:28:28

答案 1 :(得分:3)

我这样做

    Calendar cal = Calendar.getInstance();
    double d = Double.parseDouble("1.295353708E9");
    long l = (long) d * 1000;
    cal.setTimeInMillis(l);

    String date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(cal
            .getTime());

无论如何,我认为bigquery时间戳格式为“YYYY-MM-dd HH:mm:ss.SSS”