google-bigquery - BigQuery 中的优雅时区转换
问题描述
我已将带有东部时间戳的数据加载到 BigQuery 中,这些时间戳存储为源数据中的原始时间戳:
placed_eastern
-------------------
2018-07-23 00:00:03
BigQuery 默认假定原始时间戳应存储为 UTC:
2018-07-23 00:00:03 UTC
问题:我需要修正这个时区假设。
我目前有一个丑陋的黑客来修复这个错误,以确保时间戳被正确存储。这会将时间戳的日期和时间部分提取为字符串,将它们连接起来,然后重新创建时间戳。
select
placed_eastern,
timestamp(
concat(
cast(extract(date from placed_eastern) as string),
' ',
cast(extract(time from placed_eastern) as string)
),
'US/Eastern'
) as actual_placed_utc
问题:是否有一种优雅的记录方式来处理这个问题?
解决方案
您可以转换为DATETIME
将时间戳视为逻辑日期/时间,然后转换回TIMESTAMP
使用US/Eastern
:
SELECT TIMESTAMP(DATETIME(placed_eastern), 'US/Eastern')) AS actual_placed_utc
FROM dataset.table
推荐阅读
- java - 如何通过java过滤文本文件并将结果保存到新文件中
- database - JMeter 线程运行一次,而循环计数器设置为“永远”且具有恒定吞吐量计时器
- mysql - Laravel 多对多关系无法添加外键约束
- html - 在非绝对位置上显示带有徽章(计数新消息)的图标
- ajax - 在 ASP.NET MVC 中使用 ajax 提交表单时显示验证消息
- c++ - 什么 execl ("/bin/emacs", "/etc/fstab"); 做?
- java - 如何将构造函数值传递给方法
- python - Python for 循环实际上是如何工作的?
- javascript - 反应数据/道具未定义
- node.js - 在 mongodb 中使用 $lookup 指定多个连接条件