Bigquery:在标准 SQL 中获取一周/月的第一天
Posted
技术标签:
【中文标题】Bigquery:在标准 SQL 中获取一周/月的第一天【英文标题】:Bigquery: Getting first day of the week/month in standard 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_WEEK
和 UTC_USEC_TO_MONTH
似乎没有任何等价物。
【问题讨论】:
虽然有一个 SQL 标准,但 SQL DB 供应商通常在处理日期的方式上有所不同。您在寻找什么特定的 SQL 平台? 这可能会帮助你***.com/questions/10007861/… @WesH 我正在使用 Google 的 Bigquery。我不确定他们使用的是哪种确切的 SQL 风格 【参考方案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)
用于本月的最后一天以上是关于Bigquery:在标准 SQL 中获取一周/月的第一天的主要内容,如果未能解决你的问题,请参考以下文章