Bigquery:在标准SQL中获取星期几/月的第一天

Nig*_* Ng 4 google-bigquery

在Bigquery的旧版 SQL中,我可以使用

SELECT DATE((UTC_USEC_TO_WEEK(TIMESTAMP_TO_USEC(TIMESTAMP('2017-04-13 20:58:06 UTC')), 0)))
Run Code Online (Sandbox Code Playgroud)

返回2017-04-09

BigQuery的标准 SQL中有没有办法做到这一点?似乎没有要任何等价物UTC_USEC_TO_WEEKUTC_USEC_TO_MONTH

Wes*_*s H 8

看起来BigQuery有一个名为TIMESTAMP_TRUNC的函数,可以执行您想要的操作。当与Day日期部分一起使用时,它被称为LegacySQL中UTC_USEC_TO_DAY(t)的替代。它还接受“周”和“月”作为可能满足您要求的参数。

TIMESTAMP_TRUNC(TIMESTAMP '2008-12-25 15:30:00', WEEK, 'UTC')
Run Code Online (Sandbox Code Playgroud)

这是从旧版SQL迁移到标准sql的页面


小智 6

这是现在有效的更好选择:

select DATE_TRUNC(date( '2008-12-25 15:30:00'), month)
Run Code Online (Sandbox Code Playgroud)

  • 老话题,但它仍然出现在搜索结果中较高的位置。我们现在可以使用“LAST_DAY(date)”表示该月的最后一天 (2认同)