将一年中的一天和一年中的日期转换为大查询

Posted

技术标签:

【中文标题】将一年中的一天和一年中的日期转换为大查询【英文标题】:Convert day of year & year to date Big Query 【发布时间】:2020-10-05 12:16:25 【问题描述】:

我有一些数据,它没有日期字段,而是在不同的列中包含作为数字的年份和作为数字的年份。

我已经尝试使用大查询功能PARSE_DATE 来通过使用PARSE_DATE("%Y %j", "2020 258") 来实现这一点,但这不起作用。 检查文档时,https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#parse_date %j 不支持 PARSE_DATE

有谁知道我该如何解决这个问题?

作为参考,以下查询尽可能接近:

SELECT PARSE_DATE("%Y %j", "2020 258") 返回2020-01-01

【问题讨论】:

【参考方案1】:

您可以使用蛮力方法,将天数添加到年初:

select date_add(parse_date('%Y', split(yyyyddd, ' ')[ordinal(1)]),
                interval cast(split(yyyyddd, ' ')[ordinal(2)] as int64) - 1 day
               )
from (select '2020 258' as yyyyddd) x;

PARSE_DATE() 不支持所有格式元素。正如documentation(相当防御性地)解释的那样:

格式字符串完全支持除 %Q、%a、%A、%g、%G、%j、%u、%U、%V、%w 和 %W 之外的大多数格式元素。

【讨论】:

这非常有效,谢谢!我看到文档不支持 %j 方法。

以上是关于将一年中的一天和一年中的日期转换为大查询的主要内容,如果未能解决你的问题,请参考以下文章

将一年中的某一天转换为某些日期格式具有 DDYYYY 并且某些日期格式具有 DDDYYYY 在 oracle 中的日期

将一年中的数字星期转换为 hiveql 中的日期 (yyyy-mm-dd)

我很难从一年中的某一天和自午夜以来的秒数获取日期/时间组件

mysql 如何把一年中的第几天,比如第300天 ,转换成日期

Python在轴上将一年中的日期转换为月份

你如何将 POSIX 日期转换为一年中的某一天?