Bigquery 自定义一周的第一天(默认为星期一)

Posted

技术标签:

【中文标题】Bigquery 自定义一周的第一天(默认为星期一)【英文标题】:Bigquery Custom first day of week (defaults Monday) 【发布时间】:2017-12-08 13:38:36 【问题描述】:

我正在尝试使用函数从日期中提取星期

format_timestamp('%V', DATE)

但 Bigquery 文档说“星期一是一周的第一天”。

有没有办法可以将星期二指定为一周的第一天。

我在 Redshift 中使用

实现了同样的效果

date_part(周,日期+间隔'-1天')

在 Bigquery 中可以吗?

【问题讨论】:

【参考方案1】:

以下是 BigQuery 标准 SQL

如下图可以使用WEEK(WEEKDAY)

#standardSQL
SELECT FORMAT_TIMESTAMP('%V', CURRENT_TIMESTAMP()), 
EXTRACT(WEEK(SATURDAY) FROM CURRENT_TIMESTAMP())

这是最近才推出的 - https://cloud.google.com/bigquery/docs/release-notes#november_30_2017

【讨论】:

谢谢米哈伊尔 :)。正是我正在寻找的功能。但我认为 Bigquery 开发人员搞砸了。例如如果我将周开始日设置为星期六。那么 2017-01-06 是第 0 周,2017-01-07 是第 1 周,2017-01-08 是第 1 周,而 2017-01-09 是第 2 周。完全不知道他们是如何得到这个数字的 现在开始。很快就会回复您:o) 米哈伊尔,忽略我之前的评论。我想我明白了它是如何实现的。但我正在寻找 ISOWEEK 而不是返回 0。我看到有 ISOWEEK 函数,但它不接受星期开始日期作为参数 如果您愿意,可以提交功能请求 - issuetracker.google.com/issues/… @crazy8 - 来自documentation - WEEK: Returns the week number of the date in the range [0, 53]. Weeks begin with Sunday, and dates prior to the first Sunday of the year are in week 0

以上是关于Bigquery 自定义一周的第一天(默认为星期一)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - showDatePicker 将一周的第一天设置为星期一

需要星期日作为一周的第一天

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

在objective-c中获取一周的第一天和最后一天

为啥在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天?

如何使 GWT DatePicker 使用星期一作为一周的第一天?