The EXTRACT function in BigQuery will return a specific part of a DATE, DATETIME or TIMESTAMP.
EXTRACT(part FROM expression)
Where expression is a DATE, part values can be:
Returns: INT64
Where expression is a DATETIME, part values can be all of the parts used with DATE (as listed above) plus:
Returns: DATE for DATE part and TIME for TIME part.
Where expression is a TIMESTAMP, part values can be all of the parts used with DATE and DATETIME (as listed above) plus:
Returns: DATETIME for DATETIME part.
WITH table AS (
SELECT DATETIME(TIMESTAMP '2021-01-05 00:00:00+00', 'UTC') AS datetime
)
SELECT
datetime,
EXTRACT(WEEK FROM datetime) AS week_sunday,
EXTRACT(WEEK(MONDAY) FROM datetime) AS week_monday
FROM table
When expression is a TIMESTAMP you an add an optional argument to specify the timezone of the output:
WITH table AS (
SELECT
CAST('2021-01-05 00:00:00+00' AS TIMESTAMP) AS datetime
)
SELECT
datetime,
EXTRACT(HOUR FROM datetime AT TIME ZONE 'America/Los_Angeles') AS hour_in_LA,
EXTRACT(HOUR FROM datetime) AS hour
FROM
table