BigQuery / Node.js 时间戳太远了
Posted
技术标签:
【中文标题】BigQuery / Node.js 时间戳太远了【英文标题】:BigQuery / Node.js timestamp way off 【发布时间】:2014-05-17 04:07:17 【问题描述】:使用此包从轻量级 Node.js 应用程序向 Google BigQuery 进行流式插入:https://www.npmjs.org/package/bigquery
我通过这行简单的代码在我的服务器上生成了一个时间戳:
jsonData['createdAt'] = new Date().getTime();
然后,我将其插入 BigQuery,插入到类型为“时间戳”的字段中。没有中间步骤(除了 Node 包)。
但是,虽然不是全部,但许多日期看起来很糟糕。例如:
46343-08-28 05:58:59 UTC
应该是 2014 年 5 月 16 日晚上 11 点 45 分。但是,我的一些 createdAt 日期是正确的,我找不到造成差异的原因。
有什么建议吗?
【问题讨论】:
【参考方案1】:没有实际调试 JS 代码,这似乎是一个“千差万别”的问题。
看看这个:
SELECT USEC_TO_TIMESTAMP(1400341611711851)
2014-05-17 15:46:51 UTC
SELECT USEC_TO_TIMESTAMP(1400341611711851*1000)
46345-01-22 13:01:51 UTC
SELECT MSEC_TO_TIMESTAMP(1400341611711851)
46345-01-22 13:01:51 UTC
SELECT MSEC_TO_TIMESTAMP(1400341611711851/1000)
2014-05-17 15:46:51 UTC
因此,要获得以秒为单位的 UNIX 时间戳,请将 new Date().getTime()
数字除以 1000。
【讨论】:
似乎是问题所在。非常感谢。 要添加到这个答案,javascript Date "getTime() 方法返回自 Unix 纪元以来的毫秒数*。" Timestamp 使用自 Unix 纪元以来的秒数。【参考方案2】:用途:
bigquery.datetime(new Date().toISOString())
【讨论】:
请更详细地编辑您的答案:这如何解决 OP 的问题?与接受的答案相比,它有什么用处?以上是关于BigQuery / Node.js 时间戳太远了的主要内容,如果未能解决你的问题,请参考以下文章
服务帐户是在 node.js 中查询 google bigquery 的正确凭据吗?