Google BigQuery DateTime функции
Google BigQuery предоставляет довольно большой набор функций для работы с датой и временем. Конечно много функций — это хорошо, но когда начинаешь разбираться, как они работают, периодически, встречаются определенные сложности. Поискав на просторах интернета хороший мануал по работе с этими функциями ничего нормального мне так и не удалось найти в связи с этим решил немного исправить данную ситуацию. В данном мануале постараюсь внести ясность, как работать с этими функциями на примере работы с базами данных Google Analytics и Firebase.
Функции для работы с датами и временем
BigQuery поддерживает 4 основных типа данных даты и времени:
- DATE: YYYY-MM-DD (2021-01-01)
- DATETIME: YYYY-MM-DD HH:MM:SS (2020-01-01 13:04:11)
- TIME: HH:MM:SS (13:04:11)
- TIMESTAMP: YYYY-MM-DD HH:MM:SS [timezone] (UTC 2020-01-01 13:04:11-5:00)
Функции для типа Date:
- CURRENT_DATE
- EXTRACT
- DATE
- DATE_ADD
- DATE_SUB
- DATE_DIFF
- DATE_TRUNC
- DATE_FROM_UNIX_DATE
- FORMAT_DATE
- LAST_DAY
- PARSE_DATE
- UNIX_DATE
CURRENT_DATE - Получаем текущую дату
CURRENT_DATE([time_zone])
select current_date; -- date
Return Data Type
DATE
EXTRACT (part FROM date) - Возвращает день, месяц, год.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
EXTRACT(part FROM date_expression)
SELECT
EXTRACT(DAY FROM today ) AS the_day,
EXTRACT(MONTH FROM today ) AS the_month,
EXTRACT(YEAR FROM today ) AS the_year
FROM (
SELECT
CURRENT_DATE() AS today,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
Return Data Type
INT64
DATE - Создает ДАТУ из значений INT64, год, месяц и день.
1. DATE(year, month, day)
2. DATE(timestamp_expression[, timezone])
3. DATE(datetime_expression)
SELECT DATE(2021, 12, 25) as date_ymd,
Return Data Type
DATE
DATE_ADD - Добавляет указанный интервал времени к ДАТЕ.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK, DAY
DATE_ADD(date_expression, INTERVAL int64_expression date_part)
SELECT
today,
DATE_ADD( today, INTERVAL 1 DAY ) AS plus_one_day,
DATE_ADD( today, INTERVAL 1 WEEK ) AS plus_one_week,
DATE_ADD( today, INTERVAL 1 MONTH ) AS plus_one_month,
DATE_ADD( today, INTERVAL 1 QUARTER ) AS plus_one_quarter,
DATE_ADD( today, INTERVAL 1 YEAR ) AS plus_one_year,
FROM (
SELECT
CURRENT_DATE() AS today,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
DATE_SUB - Вычитает указанный временной интервал из ДАТЫ.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK, DAY
DATE_SUB(date_expression, INTERVAL int64_expression date_part)
SELECT
today,
DATE_SUB( today, INTERVAL 1 DAY ) AS minus_one_day,
DATE_SUB( today, INTERVAL 1 WEEK ) AS minus_one_week,
DATE_SUB( today, INTERVAL 1 MONTH ) AS minus_one_month,
DATE_SUB( today, INTERVAL 1 QUARTER ) AS minus_one_quarter,
DATE_SUB( today, INTERVAL 1 YEAR ) AS minus_one_year,
FROM (
SELECT
CURRENT_DATE() AS today,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
DATE_DIFF - Возвращает разницу между двумя датами timestamp1 и timestamp2.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
DATE_DIFF(date_expression_a, date_expression_b, date_part)
SELECT
today,
UTC_Time,
DATE_DIFF( today, UTC_Time, DAY) AS difference_between_day,
DATE_DIFF( today, UTC_Time, WEEK ) AS difference_between_week,
DATE_DIFF( today, UTC_Time, MONTH ) AS difference_between_month,
DATE_DIFF( today, UTC_Time, QUARTER ) AS difference_between_quarter,
DATE_DIFF( today, UTC_Time, YEAR ) AS difference_between_year,
DATE_DIFF( today, UTC_Time, WEEK(SUNDAY)) AS difference_between_week_sunday,
DATE_DIFF( today, UTC_Time, WEEK(MONDAY)) AS difference_between_week_monday,
DATE_DIFF( today, UTC_Time, WEEK(TUESDAY)) AS difference_between_week_tuesday,
DATE_DIFF( today, UTC_Time, WEEK(WEDNESDAY)) AS difference_between_week_wednesday,
DATE_DIFF( today, UTC_Time, WEEK(THURSDAY)) AS difference_between_week_thusday,
DATE_DIFF( today, UTC_Time, WEEK(FRIDAY)) AS difference_between_week_friday,
DATE_DIFF( today, UTC_Time, WEEK(SATURDAY)) AS difference_between_week_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
DATE(CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME)) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
INT64
DATE_TRUNC - Усекает дату до указанной степени детализации.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
DATE_TRUNC(date_expression, date_part)
SELECT
today,
UTC_Time,
DATE_TRUNC( UTC_Time, DAY) AS trunc_day,
DATE_TRUNC( UTC_Time, WEEK ) AS trunc_week,
DATE_TRUNC( UTC_Time, MONTH ) AS trunc_month,
DATE_TRUNC( UTC_Time, QUARTER ) AS trunc_quarter,
DATE_TRUNC( UTC_Time, YEAR ) AS trunc_year,
DATE_TRUNC( UTC_Time, WEEK(SUNDAY)) AS trunc_sunday,
DATE_TRUNC( UTC_Time, WEEK(MONDAY)) AS trunc_monday,
DATE_TRUNC( UTC_Time, WEEK(TUESDAY)) AS trunc_tuesday,
DATE_TRUNC( UTC_Time, WEEK(WEDNESDAY)) AS trunc_wednesday,
DATE_TRUNC( UTC_Time, WEEK(THURSDAY)) AS trunc_thusday,
DATE_TRUNC( UTC_Time, WEEK(FRIDAY)) AS trunc_friday,
DATE_TRUNC( UTC_Time, WEEK(SATURDAY)) AS trunc_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
DATE(CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME)) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
DATE_FROM_UNIX_DATE - интерпретирует целое число как количество дней с 01.01.1970.
DATE_FROM_UNIX_DATE(int64_expression)
SELECT
today,
UTC_Time,
-- DATE_FROM_UNIX_DATE() Example #1
DATE_FROM_UNIX_DATE( 1 ) AS one_utc_day,
DATE_FROM_UNIX_DATE( 2 ) AS two_utc_day,
DATE_FROM_UNIX_DATE( 3 ) AS three_utc_day,
DATE_FROM_UNIX_DATE( 4 ) AS four_utc_day,
DATE_FROM_UNIX_DATE( 5 ) AS five_utc_day,
-- DATE_FROM_UNIX_DATE() Example #2
DATE_FROM_UNIX_DATE( 18500 ) AS one_utc_day,
DATE_FROM_UNIX_DATE( 18501 ) AS two_utc_day,
DATE_FROM_UNIX_DATE( 18502 ) AS three_utc_day,
DATE_FROM_UNIX_DATE( 18503 ) AS four_utc_day,
DATE_FROM_UNIX_DATE( 18504 ) AS five_utc_day,
-- DATE_FROM_UNIX_DATE() Example #3
DATE_FROM_UNIX_DATE( -1 ) AS one_utc_day,
DATE_FROM_UNIX_DATE( -2 ) AS two_utc_day,
DATE_FROM_UNIX_DATE( -3 ) AS three_utc_day,
DATE_FROM_UNIX_DATE( -4 ) AS four_utc_day,
DATE_FROM_UNIX_DATE( -5 ) AS five_utc_day,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
FORMAT_DATE - функция конвертирует дату в форматированный текст.
Поддерживаемые элементы в format_string
FORMAT_DATE(format_string, date_expr)
SELECT
today,
UTC_Time,
-- FORMAT_DATE() Example #1
FORMAT_DATE('%B', UTC_Time) AS date_to_month_name,
-- FORMAT_DATE() Example #2
FORMAT_DATE('%r', UTC_Time) AS date_to_am_pm,
-- FORMAT_DATE() Example #3
FORMAT_DATE('%m', UTC_Time) AS date_to_month_decimal,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
STRING
LAST_DAY - Возвращает последний день из даты.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK WEEK(
LAST_DAY(date_expression[, date_part])
SELECT
today,
UTC_Time,
LAST_DAY( UTC_Time, WEEK ) AS last_day_week,
LAST_DAY( UTC_Time, MONTH ) AS last_day_month,
LAST_DAY( UTC_Time, QUARTER ) AS last_day_quarter,
LAST_DAY( UTC_Time, YEAR ) AS last_day_year,
LAST_DAY( UTC_Time, WEEK(SUNDAY)) AS last_day_sunday,
LAST_DAY( UTC_Time, WEEK(MONDAY)) AS last_day_monday,
LAST_DAY( UTC_Time, WEEK(TUESDAY)) AS last_day_tuesday,
LAST_DAY( UTC_Time, WEEK(WEDNESDAY)) AS last_day_wednesday,
LAST_DAY( UTC_Time, WEEK(THURSDAY)) AS last_day_thusday,
LAST_DAY( UTC_Time, WEEK(FRIDAY)) AS last_day_friday,
LAST_DAY( UTC_Time, WEEK(SATURDAY)) AS last_day_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
DATE(CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME)) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
PARSE_DATE - Преобразует строковое представление даты в объект DATE.
Поддерживаемые элементы в format_string
PARSE_DATE(format_string, date_string)
SELECT
today,
-- PARSE_DATE() Example #1
PARSE_DATE('%Y-%m-%d', today) AS parse_date_today,
event_date,
-- PARSE_DATE() Example #2
PARSE_DATE('%Y%m%d', event_date) AS parse_date_event_date,
FROM (
SELECT
STRING(CURRENT_DATE()) AS today,
event_date
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
UNIX_DATE - Возвращает количество дней с 01.01.1970.
UNIX_DATE(date_expression)
SELECT
today,
UTC_Time,
event_date,
-- UNIX_DATE() Example #1
UNIX_DATE( today ) AS one_utc_today,
-- UNIX_DATE() Example #2
UNIX_DATE( UTC_Time ) AS one_utc_UTC_Time,
-- UNIX_DATE() Example #3
UNIX_DATE( event_date ) AS one_utc_event_date,
FROM (
SELECT
CURRENT_DATE() AS today,
DATE(CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME)) As UTC_Time,
PARSE_DATE('%Y%m%d', event_date) as event_date
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
INT64
Функции для типа Datetime:
- CURRENT_DATETIME
- DATETIME
- DATETIME_ADD
- DATETIME_SUB
- DATETIME_DIFF
- DATETIME_TRUNC
- FORMAT_DATETIME
- LAST_DAY
- PARSE_DATETIME
CURRENT_DATETIME - Получаем текущую дату и время
CURRENT_DATE([time_zone])
select current_datetime; -- datetime
Return Data Type
DATE
DATETIME - Создает объект DATETIME, используя значения INT64 год, месяц, день, час, минуту и секунду.
1. DATETIME(year, month, day, hour, minute, second)
2. DATETIME(date_expression[, time_expression])
3. DATETIME(timestamp_expression [, timezone])
SELECT DATETIME(2020, 1, 1, 5, 30, 00) as DATETIME
Return Data Type
DATETIME
EXTRACT - Возвращает день, месяц, год, часы, минуты, секунды.
Принимает следующие значения — MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, DAYOFWEEK, DAYOFYEAR, YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
EXTRACT(part FROM datetime_expression)
SELECT
EXTRACT(MICROSECOND FROM UTC_Time ) AS the_microsecond,
EXTRACT(MILLISECOND FROM UTC_Time ) AS the_millisecond,
EXTRACT(SECOND FROM UTC_Time ) AS the_second,
EXTRACT(MINUTE FROM UTC_Time ) AS the_minute,
EXTRACT(HOUR FROM UTC_Time ) AS the_hour,
EXTRACT(DAY FROM UTC_Time ) AS the_day,
EXTRACT(MONTH FROM UTC_Time ) AS the_month,
EXTRACT(YEAR FROM UTC_Time ) AS the_year
FROM (
SELECT
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
Return Data Type
INT64, за исключением следующих случаев:
- Если часть - ДАТА, возвращает объект ДАТА.
- Если часть - ВРЕМЯ, возвращает объект ВРЕМЯ.
DATETIME_ADD - добавляет указанный интервал времени к дате или дате и времени.
Принимает следующие значения — MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, YEAR, QUARTER, MONTH, WEEK, DAY
DATETIME_ADD(datetime_expression, INTERVAL int64_expression part)
SELECT
UTC_Time,
DATETIME_ADD( UTC_Time, INTERVAL 1 MICROSECOND ) AS plus_one_microsecond,
DATETIME_ADD( UTC_Time, INTERVAL 1 MILLISECOND ) AS plus_one_millisecond,
DATETIME_ADD( UTC_Time, INTERVAL 1 SECOND ) AS plus_one_second,
DATETIME_ADD( UTC_Time, INTERVAL 1 MINUTE ) AS plus_one_minute,
DATETIME_ADD( UTC_Time, INTERVAL 1 HOUR ) AS plus_one_hour,
DATETIME_ADD( UTC_Time, INTERVAL 1 DAY ) AS plus_one_day,
DATETIME_ADD( UTC_Time, INTERVAL 1 WEEK ) AS plus_one_week,
DATETIME_ADD( UTC_Time, INTERVAL 1 MONTH ) AS plus_one_month,
DATETIME_ADD( UTC_Time, INTERVAL 1 QUARTER ) AS plus_one_quarter,
DATETIME_ADD( UTC_Time, INTERVAL 1 YEAR ) AS plus_one_year,
FROM (
SELECT
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATETIME
DATETIME_SUB - Вычитает указанный временной интервал из ДАТЫ.
Принимает следующие значения — MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, YEAR, QUARTER, MONTH, WEEK, DAY
DATETIME_SUB(datetime_expression, INTERVAL int64_expression part)
SELECT
UTC_Time,
DATETIME_SUB( UTC_Time, INTERVAL 1 MICROSECOND ) AS minus_one_microsecond,
DATETIME_SUB( UTC_Time, INTERVAL 1 MILLISECOND ) AS minus_one_millisecond,
DATETIME_SUB( UTC_Time, INTERVAL 1 SECOND ) AS minus_one_second,
DATETIME_SUB( UTC_Time, INTERVAL 1 MINUTE ) AS minus_one_minute,
DATETIME_SUB( UTC_Time, INTERVAL 1 HOUR ) AS minus_one_hour,
DATETIME_SUB( UTC_Time, INTERVAL 1 DAY ) AS minus_one_day,
DATETIME_SUB( UTC_Time, INTERVAL 1 WEEK ) AS minus_one_week,
DATETIME_SUB( UTC_Time, INTERVAL 1 MONTH ) AS minus_one_month,
DATETIME_SUB( UTC_Time, INTERVAL 1 QUARTER ) AS minus_one_quarter,
DATETIME_SUB( UTC_Time, INTERVAL 1 YEAR ) AS minus_one_year,
FROM (
SELECT
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATETIME
DATETIME_DIFF - Возвращает разницу между двумя датами timestamp1 и timestamp2.
Принимает следующие значения — MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
DATETIME_DIFF(datetime_expression_a, datetime_expression_b, part)
SELECT
today,
UTC_Time,
DATETIME_DIFF( today, UTC_Time, MICROSECOND) AS difference_between_microsecond,
DATETIME_DIFF( today, UTC_Time, MILLISECOND ) AS difference_between_millisecond,
DATETIME_DIFF( today, UTC_Time, SECOND ) AS difference_between_second,
DATETIME_DIFF( today, UTC_Time, MINUTE ) AS difference_between_minute,
DATETIME_DIFF( today, UTC_Time, HOUR ) AS difference_between_hour,
DATETIME_DIFF( today, UTC_Time, DAY) AS difference_between_day,
DATETIME_DIFF( today, UTC_Time, WEEK ) AS difference_between_week,
DATETIME_DIFF( today, UTC_Time, MONTH ) AS difference_between_month,
DATETIME_DIFF( today, UTC_Time, QUARTER ) AS difference_between_quarter,
DATETIME_DIFF( today, UTC_Time, YEAR ) AS difference_between_year,
DATETIME_DIFF( today, UTC_Time, WEEK(SUNDAY)) AS difference_between_week_sunday,
DATETIME_DIFF( today, UTC_Time, WEEK(MONDAY)) AS difference_between_week_monday,
DATETIME_DIFF( today, UTC_Time, WEEK(TUESDAY)) AS difference_between_week_tuesday,
DATETIME_DIFF( today, UTC_Time, WEEK(WEDNESDAY)) AS difference_between_week_wednesday,
DATETIME_DIFF( today, UTC_Time, WEEK(THURSDAY)) AS difference_between_week_thusday,
DATETIME_DIFF( today, UTC_Time, WEEK(FRIDAY)) AS difference_between_week_friday,
DATETIME_DIFF( today, UTC_Time, WEEK(SATURDAY)) AS difference_between_week_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
INT64
DATETIME_TRUNC - Усекает дату до указанной степени детализации.
Принимает следующие значения — MICROSECOND, MILLISECOND, SECOND, MINUTE, HOUR, YEAR, QUARTER, MONTH, WEEK, DAY WEEK(
DATETIME_TRUNC(date_expression, date_part)
SELECT
today,
UTC_Time,
DATETIME_TRUNC( UTC_Time, MICROSECOND) AS trunc_microsecond,
DATETIME_TRUNC( UTC_Time, MILLISECOND ) AS trunc_millisecond,
DATETIME_TRUNC( UTC_Time, SECOND ) AS trunc_second,
DATETIME_TRUNC( UTC_Time, MINUTE ) AS trunc_minute,
DATETIME_TRUNC( UTC_Time, HOUR ) AS trunc_hour,
DATETIME_TRUNC( UTC_Time, DAY) AS trunc_day,
DATETIME_TRUNC( UTC_Time, WEEK ) AS trunc_week,
DATETIME_TRUNC( UTC_Time, MONTH ) AS trunc_month,
DATETIME_TRUNC( UTC_Time, QUARTER ) AS trunc_quarter,
DATETIME_TRUNC( UTC_Time, YEAR ) AS trunc_year,
DATETIME_TRUNC( UTC_Time, WEEK(SUNDAY)) AS trunc_sunday,
DATETIME_TRUNC( UTC_Time, WEEK(MONDAY)) AS trunc_monday,
DATETIME_TRUNC( UTC_Time, WEEK(TUESDAY)) AS trunc_tuesday,
DATETIME_TRUNC( UTC_Time, WEEK(WEDNESDAY)) AS trunc_wednesday,
DATETIME_TRUNC( UTC_Time, WEEK(THURSDAY)) AS trunc_thusday,
DATETIME_TRUNC( UTC_Time, WEEK(FRIDAY)) AS trunc_friday,
DATETIME_TRUNC( UTC_Time, WEEK(SATURDAY)) AS trunc_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATETIME
FORMAT_DATETIME - функция конвертирует дату в форматированный текст.
Поддерживаемые элементы в format_string
FORMAT_DATETIME(format_string, date_expr)
SELECT
today,
UTC_Time,
-- FORMAT_DATETIME() Example #1
FORMAT_DATETIME('%B', UTC_Time) AS datetime_to_month_name,
-- FORMAT_DATETIME() Example #2
FORMAT_DATETIME('%r', UTC_Time) AS datetime_to_am_pm,
-- FORMAT_DATETIME() Example #3
FORMAT_DATETIME('%m', UTC_Time) AS datetime_to_month,
-- FORMAT_DATETIME() Example #4
FORMAT_DATETIME('%M', UTC_Time) AS datetime_to_minut,
-- FORMAT_DATETIME() Example #4
FORMAT_DATETIME('%H', UTC_Time) AS datetime_to_hour,
-- FORMAT_DATETIME() Example #4
FORMAT_DATETIME('%S', UTC_Time) AS datetime_to_second,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
STRING
LAST_DAY - Возвращает последний день из даты.
Принимает следующие значения — YEAR, QUARTER, MONTH, WEEK WEEK(
LAST_DAY(datetime_expression[, date_part])
SELECT
today,
UTC_Time,
LAST_DAY( UTC_Time, WEEK ) AS last_day_week,
LAST_DAY( UTC_Time, MONTH ) AS last_day_month,
LAST_DAY( UTC_Time, QUARTER ) AS last_day_quarter,
LAST_DAY( UTC_Time, YEAR ) AS last_day_year,
LAST_DAY( UTC_Time, WEEK(SUNDAY)) AS last_day_sunday,
LAST_DAY( UTC_Time, WEEK(MONDAY)) AS last_day_monday,
LAST_DAY( UTC_Time, WEEK(TUESDAY)) AS last_day_tuesday,
LAST_DAY( UTC_Time, WEEK(WEDNESDAY)) AS last_day_wednesday,
LAST_DAY( UTC_Time, WEEK(THURSDAY)) AS last_day_thusday,
LAST_DAY( UTC_Time, WEEK(FRIDAY)) AS last_day_friday,
LAST_DAY( UTC_Time, WEEK(SATURDAY)) AS last_day_saturday,
FROM (
SELECT
CURRENT_DATE() AS today,
CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATE
PARSE_DATETIME - Преобразует строковое представление даты в объект DATE.
Поддерживаемые элементы в format_string
PARSE_DATE(format_string, date_string)
SELECT
today,
-- PARSE_DATETIME() Example #1
PARSE_DATETIME('%Y-%m-%d', today) AS parse_date_today,
event_date,
-- PARSE_DATETIME() Example #2
PARSE_DATETIME('%Y%m%d', event_date) AS parse_date_event_date,
-- PARSE_DATETIME() Example #3
UTC_Time,
PARSE_DATETIME('%Y-%m-%d %H:%M:%S', UTC_Time) AS parse_date_UTC_Time,
FROM (
SELECT
STRING(CURRENT_DATE()) AS today,
event_date,
FORMAT_DATETIME('%Y-%m-%d %H:%M:%S', DATETIME(TIMESTAMP_MICROS(event_timestamp))) As UTC_Time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
DATETIME
Функции для типа Time:
CURRENT_TIME - Получаем текущую дату.
CURRENT_DATE([time_zone])
SELECT CURRENT_TIME() as now;
Return Data Type
TIME
TIME - Создает объект TIME, используя значения INT64 (час, минуту и секунду).
1. TIME(hour, minute, second)
2. TIME(timestamp, [timezone])
3. TIME(datetime)
SELECT
time_hms,
Time_stamp,
Date_time
FROM (
SELECT
TIME(15, 30, 00) as time_hms,
TIME(CAST(TIMESTAMP_MICROS(event_timestamp) AS TIMESTAMP)) As Time_stamp,
TIME(CAST(TIMESTAMP_MICROS(event_timestamp) AS DATETIME)) As Date_time,
FROM
`firebase-public-project.analytics_153293282.events_20181003`)
LIMIT 1
Return Data Type
TIME
EXTRACT
- TIME_ADD
- TIME_SUB
- TIME_DIFF
- TIME_TRUNC
- FORMAT_TIME
- PARSE_TIME
Функции для типа Timestamp
- CURRENT_TIMESTAMP
- EXTRACT
- STRING
- TIMESTAMP
- TIMESTAMP_ADD
- TIMESTAMP_SUB
- TIMESTAMP_DIFF
- TIMESTAMP_TRUNC
- FORMAT_TIMESTAMP
- PARSE_TIMESTAMP
- TIMESTAMP_SECONDS
- TIMESTAMP_MILLIS
- TIMESTAMP_MICROS
- UNIX_SECONDS
- UNIX_MILLIS
- UNIX_MICROS