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中生成一周的第一天,一周的最后一天和两个日期之间的周数