首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BigQuery的GENERATE_DATE_ARRAY中的区间处理

BigQuery的GENERATE_DATE_ARRAY中的区间处理
EN

Stack Overflow用户
提问于 2022-10-17 12:36:42
回答 2查看 45关注 0票数 0

我使用GENERATE_DATE_ARRAY获取两个日期之间的所有月底日期。根据文档,实际上,GENERATE_DATE_ARRAY支持INTERVAL部分中的月份关键字:

代码语言:javascript
运行
复制
SELECT GENERATE_DATE_ARRAY('2020-12-31', '2022-03-31', INTERVAL 1 MONTH)

不幸的是,正如您所看到的,结果是非常糟糕的:

看起来在二月份之后,这个过程就被搞砸了,直到最后一天才结束,直到月底的28天。

我遗漏了什么吗?或者这是个窃听器?

EN

Stack Overflow用户

回答已采纳

发布于 2022-10-17 13:36:00

正如@Jaytiger 评论所指出的那样,这可能是预料中的事情,尽管没有清楚的记录。在一些日期函数的文档中(例如,请参见添加文档):

当日期在(或接近)月份的最后一天时,需要对月份、季度和年份的部分进行特殊处理。如果结果月份的天数少于原始日期的日期,则结果日期是该月份的最后一个日期。

作为一种解决办法,如果您想获得EOM日期,可以使用此方法:

代码语言:javascript
运行
复制
SELECT DATE_SUB(day, INTERVAL 1 DAY) FROM
  UNNEST(GENERATE_DATE_ARRAY('2021-01-01', '2022-04-01', INTERVAL 1 MONTH)) day

换句话说,与其生成EOM日期,不如生成月开始日期并减去一天。

另一种方法是使用@Mikhail在他的回复中建议的方法。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74097389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档