【问题标题】:How to convert BigQuery TIMESTAMP to Date in Google Apps Script?如何在 Google Apps 脚本中将 BigQuery TIMESTAMP 转换为日期?
【发布时间】: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) ...感谢stackoverflow.com/questions/10943997/…

标签: google-apps-script google-bigquery


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多