当前位置:  开发笔记 > 编程语言 > 正文

在Google BigQuery中获取给定月份的总天数?

如何解决《在GoogleBigQuery中获取给定月份的总天数?》经验,为你挑选了1个好方法。

我可以创建用户定义的函数并计算给定月份的总天数.是否有直接的方法在给定日期内在给定月份内没有天数

例如.

select date_t, some_inbuilt_function_get_total_no_of_days_in_month(date_t)

从给定日期开始有月份功能,同样有日期功能,所以我可以去月初.有日期差异功能,但没有办法到月底.

参考:https://cloud.google.com/bigquery/docs/reference/legacy-sql



1> Mikhail Berl..:

这可能是审美偏好的问题,但下面看起来更优雅

#standardSQL
CREATE TEMP FUNCTION DaysInMonth(d DATE) AS (
  32 - EXTRACT(DAY FROM DATE_ADD(DATE_TRUNC(d, MONTH), INTERVAL 31 DAY))
);

SELECT DaysInMonth('2017-01-17');  

不知何故,我觉得在大容量上会更优化(如果有任何用例)

下面是另一个版本 - 不太理想

#standardSQL
CREATE TEMP FUNCTION DaysInMonth(d DATE) AS (
  EXTRACT(DAY FROM DATE_SUB(DATE_ADD(d, INTERVAL 1 MONTH), 
                            INTERVAL EXTRACT(DAY FROM d) DAY))
);

SELECT DaysInMonth('2017-01-17')  

如果出于任何原因需要在BigQuery Legacy SQL中使用它,请查看以下示例(但仍考虑迁移到标准SQL)

#legacySQL
SELECT 
  32 - DAY(DATE_ADD(UTC_USEC_TO_MONTH(PARSE_UTC_USEC(d)),31,'DAY')) as DaysInMonth
FROM (SELECT '2017-01-17' as d)

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有