google-bigquery - 在 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”。我哪里错了?
解决方案
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
)
);
推荐阅读
- javascript - 担心 EcmaScript 2015 模块中的循环引用
- java - 为什么 JdbcClientTokenServices 不保存刷新令牌?
- javascript - Javascript让提升行为问题
- javascript - Cypress 如何处理错误
- python - 自动驾驶汽车没有通过 Q-Learning 改进
- informatica - 安装 informatica power center 9.5.1 时无法连接 oracle 数据库 (12c)
- jquery - 引导弹出框不显示,
- bash - 只匹配一次模式,然后继续下一个模式,即使在 shell 脚本中再次匹配相同的模式
- php - 使用碳查找一周中的每一天 [1st,2nd,3rd] 对于接下来的 15 天
- akka-stream - Akka Streams:在 Source 的开头和结尾添加字符