如何在BigQuery中通过公式获取世纪最后一天?
在BigQuery中获取世纪最后一天的公式实现
如果你需要替换直接赋值DATE('2099-12-31')的写法,这里提供两种实用的公式实现方式:
1. 固定获取21世纪最后一天(2099-12-31)
可以通过构造下一个世纪的第一天,再向前推1天来实现:
DATE_SUB(DATE_TRUNC(DATE('2100-01-01'), YEAR), INTERVAL 1 DAY)
或者用年份计算的方式直接生成:
DATE(2100 - 1, 12, 31)
2. 通用获取任意日期所在世纪的最后一天
如果需要根据给定日期动态计算其所在世纪的最后一天,可以用以下公式:
DATE( FLOOR((EXTRACT(YEAR FROM your_date_column) + 99) / 100) * 100 - 1, 12, 31 )
公式解释:
EXTRACT(YEAR FROM your_date_column):提取目标日期的年份(年份 + 99) / 100:计算该年份所属的世纪(比如2023年得到21.22)FLOOR(...) * 100:得到该世纪的起始年份+100(21世纪对应2100)-1:得到世纪的最后一年(2099)DATE(..., 12, 31):构造该年的12月31日,即世纪最后一天
示例:
假设要计算当前日期所在世纪的最后一天:
SELECT DATE(FLOOR((EXTRACT(YEAR FROM CURRENT_DATE()) + 99) / 100) * 100 - 1, 12, 31) AS century_last_day;
内容的提问来源于stack exchange,提问作者Ana
相关产品推荐
相关产品推荐

