如何使用 unnest 生成日期数组来提供月末索引?
Posted
技术标签:
【中文标题】如何使用 unnest 生成日期数组来提供月末索引?【英文标题】:how can i use unnest generate date array to provide end of month index? 【发布时间】:2020-10-05 16:00:29 【问题描述】:我希望能够为我的数据创建一个虚假索引,例如如果我有一个订单,我希望它在下面创建的数组中的每个日期重复。
select
*
from
database.data,
UNNEST(GENERATE_DATE_ARRAY(
'2014-01-01',
(SELECT
MAX(Order_Date)
FROM
database.data), INTERVAL 1 MONTH)) AS month
但是,这会创建每个月 1 日的索引,我该如何更改它以使其成为每个月的月底?例如2014-01-31,间隔1个月,起
【问题讨论】:
【参考方案1】:您可以使用日期算术:
select d.*, date_sub(date_add(dt, 1, interval 1 month), interval 1 day)
from database.data d
cross join unnest(
generate_date_array('2014-01-01', (select max(order_date) from database.data), interval 1 month)
) as dt
【讨论】:
【参考方案2】:自 2020 年 10 月 14 日起,发布了一个新函数 LAST_DAY,可以一站式完成此操作:
SELECT LAST_DAY(DATE '2008-11-25', MONTH) AS last_day
【讨论】:
以上是关于如何使用 unnest 生成日期数组来提供月末索引?的主要内容,如果未能解决你的问题,请参考以下文章