如何使用周值配置单元获取月值

Posted

技术标签:

【中文标题】如何使用周值配置单元获取月值【英文标题】:How to get month value using week value hive 【发布时间】:2020-08-18 09:53:08 【问题描述】:

我想使用周数来获取月份值。我将周数存储在带有年份值的表中 如何使用该周值查询数据库以获取月份值。 我正在使用 hiveQL。

示例:

201801(week) ------->201801(month)
201804(week) ------->201801(month)

【问题讨论】:

【参考方案1】:

假设一周有整整 7 天。提取周数,乘以 7,添加到 'year-01-01' 并从结果日期中提取月份,lpad 与 0 以从 1 中获取 '01' 并与年份连接:

with data_example as(
select stack(3,'201801','201804','201805') as yr_wk
)

select yr_wk, concat(substr(yr_wk, 1,4),
                     lpad(month(date_add(date(concat(substr(yr_wk, 1,4),'-01-01')),int(substr(yr_wk, 5,2))*7)),2,0)
                    ) yr_mth
 from data_example

结果:

yr_wk   yr_mth
201801  201801
201804  201801
201805  201802

【讨论】:

感谢您的反馈!如果一年有 53 周,我该如何编写查询? @Spark 不知道如何处理 52/52 周年...使用 date_add week*7 到 2018-01-01 的方法可能不准确...但我不知道另一种解决方案

以上是关于如何使用周值配置单元获取月值的主要内容,如果未能解决你的问题,请参考以下文章

如何在标准 SQL 的 BigQuery 中过滤具有 iso 周值的列?

如何在不同的列中显示包含每个月值的汇总数据?

如何计算配置单元中一条记录的大小?

如何获取/生成现有配置单元表的创建语句?

如何在配置单元中获取复杂数据类型列的长度

在配置单元中,如何获取具有键,值的子集的映射