2017-04-13 3 views
1

In BigQuery der Vermächtnis SQL, kann ich den Beginn der Woche für ein Datum erhalten, indemBigQuery: Erhalten ersten Tag der Woche/Monat in Standard-SQL-

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

verwendet, die 2017-04-09 zurückgibt.

Gibt es eine Möglichkeit, dies in BigQuery Standard SQL zu tun? Es scheint keine Entsprechungen für UTC_USEC_TO_WEEK und UTC_USEC_TO_MONTH zu geben.

+0

Obwohl ein SQL-Standards gibt es, Anbieter SQL DB haben in der Regel Variationen, wie sie Daten verarbeiten. Nach welcher spezifischen SQL-Plattform suchen Sie? –

+0

Dies könnte Ihnen helfen http://stackoverflow.com/questions/10007861/getting-the-start-and-ending-date-of-week-in-sql-server –

+0

@WesH Ich benutze Googles Bigquery. Ich bin nicht sicher, welche genaue Art von SQL sie verwenden –

Antwort

3

Es sieht so aus, als ob BigQuery eine Funktion namens TIMESTAMP_TRUNC hat, die tun kann, was Sie wollen. Es wird in LegacySQL als Ersatz für UTC_USEC_TO_DAY (t) referenziert, wenn es mit einem Day-Datenteil verwendet wird. Es akzeptiert auch Woche und Monat als einen Parameter, der Ihre Anforderungen erfüllen kann.

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

Hier ist die Seite für migrating from Legacy to Standard sql

+0

Gut finden! Klappt wunderbar. Genau das habe ich gesucht, danke! –

Verwandte Themen