ISO8601是一种国际标准的日期和时间表示方法,格式如"2023-05-15T14:30:00Z"。BigQuery是Google提供的云数据仓库服务,支持SQL查询和数据分析。
在BigQuery中,有几种方法可以将ISO8601格式的字符串转换为日期格式:
SELECT PARSE_DATE('%Y-%m-%d', SUBSTR(iso8601_string, 1, 10)) AS date_value
FROM your_table
SELECT DATE(iso8601_string) AS date_value
FROM your_table
SELECT CAST(SUBSTR(iso8601_string, 1, 10) AS DATE) AS date_value
FROM your_table
如果需要同时转换日期和时间:
SELECT PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S%Ez', iso8601_string) AS timestamp_value
FROM your_table
假设有一个包含ISO8601格式字符串的表:
WITH sample_data AS (
SELECT '2023-05-15T14:30:00Z' AS iso8601_string UNION ALL
SELECT '2022-12-31T23:59:59Z' UNION ALL
SELECT '2021-01-01T00:00:00Z'
)
SELECT
iso8601_string,
DATE(iso8601_string) AS date_value,
PARSE_TIMESTAMP('%Y-%m-%dT%H:%M:%S%Ez', iso8601_string) AS timestamp_value
FROM sample_data
问题:转换时出现错误"Invalid date" 原因:输入字符串不符合ISO8601格式或包含非法字符 解决方案:先验证字符串格式或使用SAFE_CAST/SAFE_PARSE_DATE函数
SELECT SAFE_CAST(SUBSTR(iso8601_string, 1, 10) AS DATE) AS safe_date_value
FROM your_table
问题:时区信息丢失 原因:DATE类型不存储时区信息 解决方案:如果需要保留时区信息,使用TIMESTAMP类型而非DATE类型
没有搜到相关的文章