如何在标准 SQL 中将 Epoch 时间戳转换为日期

新手上路,请多包涵

当我环顾四周时,我没有找到任何简单的答案,所以我想我会把它放在这里,以防有人遇到和我一样的问题,本来应该是一个微不足道的问题。

我在 Google 的 BigQuery 中使用 ReDash 分析,并在数据源设置中打开了 标准 SQL 。出于查询的目的,我需要将时间戳 - 以毫秒为单位的 unix 时间,作为字符串 - 转换为 Date 格式,以便我可以使用 DATE_DIFF 方法。

例如… "1494865480000""2017-05-15"

困难在于强制转换和转换过于严格,似乎没有足够的方法对其进行解析。请看下面我的回答! (尽管如果某些 SQL 老师知道更雄辩的方式,请告诉我!)

原文由 Joseph Wolf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 816
2 个回答

在标准 SQL 中使用 TIMESTAMP_MICROSEXTRACT(DATE FROM <timestamp>) 一起使用:

 SELECT EXTRACT(DATE FROM TIMESTAMP_MILLIS(1494865480000))

原文由 Mosha Pasumansky 发布,翻译遵循 CC BY-SA 3.0 许可协议

经过多次试验和错误,这是我的解决方案:

DATE_ADD( DATE'1970-01-01', INTERVAL CAST( ( CAST( epochTimestamp AS INT64 ) / 86400000 ) AS INT64 ) DAY ) AS convertedDate

也就是说,我把字符串转换成整数,除以一天中的毫秒数,然后使用 DATE_ADD 方法,并将结果添加到 Epoch 时间的开始,并计算出结果天。

我希望这可以节省另一个小辈的时间!

原文由 Joseph Wolf 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进