2014-10-31 48 views
1

Bigquery.jobs().query().execute返回时间戳的纪元时间,并且纪元时间包括带有结尾字母数字值的点(1.295353708E9),从而将该值转换为Java时间戳失败;Bigquery.jobs()。query查询返回纪元时间1.295353708E9时间戳列

​​

返回值1.295353708E9相同1295353708但不知道什么是最好的方式来处理,作为BQ的web用户界面使得它。

任何帮助高度赞赏!

+0

值得注意的是BigQuery使用秒_specifies的秒数[1](https://cloud.google.com/bigquery/preparing-data-for-bigquery#datatypes),而Java使用** mili **秒。这就是为什么需要'* 1000'的原因。 – user454322 2016-04-06 10:50:31

回答

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

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”