如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?

Posted

技术标签:

【中文标题】如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?【英文标题】:How to convert BigQuery TIMESTAMP to Date in Google Apps Script? 【发布时间】:2021-04-30 22:17:28 【问题描述】:

TL;DR:如何在 javascript 中将 字符串 "1.619820361123853E9" 转换为 Date


长篇大论: Google Apps 脚本中BigQuery.Jobs.query() 中的TIMESTAMP 值以字符串 的大数字形式返回。例如:

SELECT CURRENT_TIMESTAMP() AS today_timestamp

在 Google Apps 脚本项目中运行它(使用来自 https://developers.google.com/apps-script/advanced/bigquery 的代码作为指导)看起来像这样:

  const request = 
    query: "SELECT CURRENT_TIMESTAMP() AS today_timestamp",
    useLegacySql: false
  ;
  let queryResults = BigQuery.Jobs.query(request, DW_PROJECT_ID);
  let jobId = queryResults.jobReference.jobId;

  let sleepTimeMs = 500;
  while (!queryResults.jobComplete) 
    Logger.log(`Waiting for query: $jobId ($sleepTimeMs)`);
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(DW_PROJECT_ID, jobId);
  

  let rows = queryResults.rows;
  while (queryResults.pageToken) 
    queryResults = BigQuery.Jobs.getQueryResults(DW_PROJECT_ID, jobId, 
      pageToken: queryResults.pageToken
    );
    rows = rows.concat(queryResults.rows);
  

  let data = new Array(rows.length);
  for (let i = 0; i < rows.length; i++) 
    let cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (let j = 0; j < cols.length; j++) 
      data[i][j] = cols[j].v;
    
  

  Logger.log(`BQ to JavaScript TIMESTAMP: $data[0][0]`)

结果是data[0][0] 类似于"1.619820361123853E9"(一个字符串)。

如何将其转换为Date

【问题讨论】:

它看起来像 Date() 值所以尝试 new Date(value); ref 尝试new Date(parseFloat("1.619820361123853E9")) 给我 1970 年 1 月 19 日星期一 09:57:00 GMT-0800(太平洋标准时间)......这是不对的! :) 啊哈! new Date(Number("1.619820361123853E9") * 1000) ...感谢***.com/questions/10943997/… 【参考方案1】:

为了将字符串转换为日期,你应该试试这个:

new Date(Number("1.619820361123853E9") * 1000)

【讨论】:

以上是关于如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Apps 脚本在 Google 表格中“清除格式”

Google Apps 脚本:Google 表格分组

如何在 Google Apps 脚本中使用服务帐户对 Google 表格进行身份验证

如何使用 Google Apps 脚本在个人 Google 云端硬盘和团队云端硬盘之间移动文件?

如何使用 Google Apps 脚本将公式添加到 Google 表格?

使用 Google Apps 脚本在 Google 表格中创建新表格