【问题标题】:Bigquery: Getting first day of the week/month in standard SQLBigquery:在标准 SQL 中获取一周/月的第一天
【发布时间】:2017-04-13 13:39:37
【问题描述】:

在 Bigquery 的 legacy SQL 中,我可以使用

SELECT DATE((UTC_USEC_TO_WEEK(TIMESTAMP_TO_USEC(TIMESTAMP('2017-04-13 20:58:06 UTC')), 0)))

返回2017-04-09

有没有办法在 BigQuery 的标准 SQL 中执行此操作? UTC_USEC_TO_WEEKUTC_USEC_TO_MONTH 似乎没有任何等价物。

【问题讨论】:

  • 虽然有一个 SQL 标准,但 SQL DB 供应商通常在处理日期的方式上有所不同。您在寻找什么特定的 SQL 平台?
  • @WesH 我正在使用 Google 的 Bigquery。我不确定他们使用的是哪种确切的 SQL 风格

标签: google-bigquery


【解决方案1】:

BigQuery 似乎有一个名为 TIMESTAMP_TRUNC 的函数,它可以做你想做的事。当与 Day 日期部分一起使用时,它被引用为 LegacySQL 中 UTC_USEC_TO_DAY(t) 的替代品。它还接受周和月作为可能满足您要求的参数。

TIMESTAMP_TRUNC(TIMESTAMP '2008-12-25 15:30:00', WEEK, 'UTC')

这是migrating from Legacy to Standard sql的页面

【讨论】:

  • 好发现!奇迹般有效。这正是我想要的,谢谢!
【解决方案2】:

这是现在更好的选择:

select DATE_TRUNC(date( '2008-12-25 15:30:00'), month)

【讨论】:

  • 旧主题,但它仍然在搜索结果中显示很高。我们现在可以将LAST_DAY(date) 用于本月的最后一天
猜你喜欢
  • 2017-12-29
  • 2011-11-02
  • 2020-06-04
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 2010-12-26
相关资源
最近更新 更多