You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery类型转换问题:字符串转Datetime及yyyymmdd格式int64转TIMESTAMP

嘿,这两个转换需求在BigQuery里都挺常见的,我来给你一步步讲清楚怎么实现:

1. 将字符串类型转换为Datetime类型

BigQuery提供了PARSE_DATETIME函数来处理字符串到Datetime的转换,核心是匹配你的字符串格式指定对应的格式符。

比如如果你的字符串是'2024-05-20 14:30:00'这种标准的年-月-日 时:分:秒格式,直接用%Y-%m-%d %H:%M:%S作为格式参数即可:

SELECT PARSE_DATETIME('%Y-%m-%d %H:%M:%S', '2024-05-20 14:30:00') AS converted_datetime;

如果你的字符串格式是其他样式,只需要调整格式符就行:

  • 处理仅日期的字符串:
SELECT PARSE_DATETIME('%Y/%m/%d', '2024/05/20') AS date_only_datetime;
  • 处理年月格式的字符串:
SELECT PARSE_DATETIME('%Y-%m', '2024-05') AS year_month_datetime;

注意:Datetime类型是不带时区的本地时间,如果你的字符串包含时区信息,建议先转成Timestamp类型,再按需转Datetime。

2. 将yyyymmdd格式的INT64类型转换为TIMESTAMP类型

对于yyyymmdd格式的整数(比如20240520),最简洁的方式是先把整数转成字符串,再用PARSE_TIMESTAMP函数解析:

SELECT PARSE_TIMESTAMP('%Y%m%d', CAST(20240520 AS STRING)) AS converted_timestamp;

如果需要指定时区(比如默认是UTC,你要转成东八区),可以在函数里加上时区参数:

SELECT PARSE_TIMESTAMP('%Y%m%d', CAST(20240520 AS STRING), 'Asia/Shanghai') AS cst_timestamp;

另外,如果你想通过拆分整数的方式实现(虽然没必要,但可以作为思路参考),可以用数值运算提取年、月、日,再转成日期后转Timestamp:

SELECT TIMESTAMP(
  DATE(
    CAST(20240520 / 10000 AS INT64), -- 提取年份2024
    CAST((20240520 % 10000)/100 AS INT64), -- 提取月份05
    CAST(20240520 % 100 AS INT64) -- 提取日期20
  )
) AS converted_timestamp;

这种方式更繁琐,但适合理解底层逻辑。

内容的提问来源于stack exchange,提问作者Nazrin Guliyeva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 08:37:39