首页 > 解决方案 > PARSE_DATETIME 格式与一年中的某一天

问题描述

BigQuery 中的 PARSE_DATETIME 函数与年份 (%j) 格式元素一起使用时出现问题。该函数似乎忽略了年份元素。

例如。

select PARSE_DATETIME("%Y%j", "2013243")

返回2013-01-01T00:00:00,缺少一年中的某天组件。

但是,具有相同日期格式元素的反向函数按预期工作:

select FORMAT_DATETIME("%Y%j", "2013-02-02T00:00:00")

返回:2013033

漏洞?还是用户错误?

干杯

标签: google-cloud-platformgoogle-bigquery

解决方案


不是错误,也不是错误!PARSE_DATETIME 使用 format_string 和 DATETIME 的 STRING 表示来返回 DATETIME -> "2013243" 不代表 DATETIME 字符串,而不是 DATE...

为了实现您要查找的内容,首先获取日期编号 - 1 并将其添加到日期(一年中的第一天)并将输出格式化为 DATETIME

SELECT DATETIME(DATE_ADD((SELECT PARSE_DATE("%Y%j", "2013243")), INTERVAL CAST((SELECT SUBSTR("2013243", -3)) AS INT64) -1 DAY));

输出:2013-08-31T00:00:00


推荐阅读