首页 > 解决方案 > 在 BigQuery 中解析 Julian 日期

问题描述

我将函数CAST(CAST(Column1 AS CHAR(7)) AS DATE FORMAT 'YYYYDDD')从 Teradata 转换为 BigQuery,FORMAT_DATE('%E4Y%j',PARSE_DATE('%E4Y%j',CAST(Column1 AS STRING)))其中 Column1 在 TD 中是 DECIMAL,在 BQ 中是 NUMERIC。如果 Column1 在 BQ 中具有值“2020280”,我会在解析结果中得到 2020001,但我需要它是“2020280”。我哪里错了?

标签: google-bigquery

解决方案


PARSE_DATE 不支持 %j。使用 DATE_ADD 作为解决方法:

select FORMAT_DATE(
    '%E4Y%j',
    DATE_ADD(
        PARSE_DATE('%E4Y', LEFT('2020280', 4)),
        INTERVAL (CAST(RIGHT('2020280', 3) AS INT64) - 1) DAY
    )
);

推荐阅读