python - BigQuery 自动将时间戳时区转换为 UTC
问题描述
我有一张这样的桌子:
和这样的文件:https ://storage.googleapis.com/test_share_file/testTimestamp.csv
我使用 python 将文件加载到大查询中:
from google.cloud import bigquery as bq
gs_path = 'gs://test_share_file/testTimestamp.csv'
bq_client = bq.Client.from_service_account_json(gcp_creds_fp)
ds = bq_client.dataset('test1')
tbl = ds.table('testTimestamp')
job_config = bq.LoadJobConfig()
job_config.write_disposition = bq.job.WriteDisposition.WRITE_APPEND
job_config.skip_leading_rows = 1 # skip header
load_job = bq_client.load_table_from_uri(gs_path, tbl, job_config=job_config)
res = load_job.result()
然而在表格中,两个时间戳都是 UTC 时间!
如何让第二列在东部时间?
解决方案
您可以即时将第一列“转换”为东部时间 - 如下例所示
#standardSQL
WITH t AS (
SELECT TIMESTAMP '2018-05-07 22:40:00+00:00' AS ts
)
SELECT ts, STRING(ts, '-04:00') timestamp_eastern
FROM t
我正在处理......固执......
您可以创建视图,该视图将包含您需要的所有逻辑,因此客户端将查询该视图而不是原始表
#standardSQL
CREATE VIEW `project.dataset.your_view` AS
SELECT ts, STRING(ts, '-04:00') timestamp_eastern
FROM `project.dataset.your_table`
我确实认为大查询无法在时区显示时间很奇怪
时间戳代表一个绝对时间点,与任何时区或惯例(例如夏令时)无关。
解析时间戳或格式化时间戳以进行显示时使用时区。时间戳值本身不存储特定的时区。字符串格式的时间戳可能包括时区。如果未明确指定时区,则使用默认时区 UTC。
查看更多关于Timestamp type
推荐阅读
- python - 该方法已弃用,应使用 __call__ 代替,如何在 BERT 中解决此问题?
- python - 获取火炬张量列表的平面视图
- vscode-remote - VS Code 远程开发无法正常工作
- amazon-web-services - 使用 terraform 将 vpc 的安全组 ID 放入列表中
- r - R中的余弦相似度矩阵
- c# - 根据是否选择了 Xamarin CollectionView 项来确定 ReactiveUI 中的 CanExecute
- sensenet - Sensenet 显示 UTC 日期
- java - 如何在我的 Java 代码中添加优惠券功能
- python - 全局变量 discord.py
- c++ - 在模板函数中确定忠实表示整数类型参数的最短浮点类型