Проблемы с извлечением ДАТЫ за конкретный месяц из поля отметки времени в BigQuery SQL

Только что приступил к своей первой работе аналитика данных на этой неделе! Мой первый большой запрос наталкивается на множество препятствий: мне нужно каким-то образом извлечь определенный набор дат из поля отметки времени.

В частности: мне нужно извлечь все даты за декабрь, то есть диапазон с 1 декабря 2020 года по 31 декабря 2020 года из данных временной метки. Я попробовал формулы из этих двух других записей stackoverflow:

Я забыл указать, как выглядят данные: 2020-12-12 16: 36: 58.944 UTC и просто хочу вернуть дату '2020-12-2-01-2020-12-31' в конечном счете.

1. Извлечение даты из метки времени в Bigquery: предпочтительный метод 2. BigQuery: извлекать дату из datetime с часовым поясом

Код, который я пробовал SELECT EXTRACT (DATE FROM PARSE_TIMESTAMP ('% m /% d /% Y% H:% M:% S% Z% z', '27.11.2019 14 : 40: 15 CET +0100 ')) Как дата

Я не понимаю, как извлечь только часть даты из метки времени, а затем как извлечь или упорядочить только даты, чтобы мой запрос возвращал значения только за декабрь.

Халп! Я пробовал использовать функцию извлечения и функцию Trunc, но ничего не работает.

Я все еще изучаю правильный / наиболее понятный способ задавать свои вопросы, поэтому все советы по прояснению приветствуются!


person lillemongrab    schedule 16.01.2021    source источник


Ответы (1)


Рассмотрим ниже

select *, 
from `project.dataset.table`
where date_trunc(date(parse_timestamp('%m/%d/%Y %H:%M:%S %Z %z',ts)),month)='2020-12-01'     

Чтобы проверить, поиграйте с приведенным выше, вы можете использовать приведенный ниже пример игрушки

with `project.dataset.table` as (
    select 1 id, '11/27/2020 14:40:15 CET +0100' ts union all 
    select 2, '11/29/2020 14:40:15 CET +0100' union all 
    select 3, '11/30/2020 14:40:15 CET +0100' union all 
    select 4, '12/10/2020 00:20:15 CET +0100' union all 
    select 5, '12/20/2020 00:40:15 CET +0100' union all 
    select 6, '12/25/2020 14:40:15 CET +0100' union all 
    select 7, '12/27/2020 14:40:15 CET +0100' union all 
    select 8, '01/02/2021 14:40:15 CET +0100' union all 
    select 9, '01/04/2021 14:40:15 CET +0100' 
)
select *, 
    date(parse_timestamp('%m/%d/%Y %H:%M:%S %Z %z', ts)) date,
    date_trunc(date(parse_timestamp('%m/%d/%Y %H:%M:%S %Z %z', ts)), month) month
from `project.dataset.table`
where date_trunc(date(parse_timestamp('%m/%d/%Y %H:%M:%S %Z %z',ts)),month)='2020-12-01'    

с выходом

введите описание изображения здесь

person Mikhail Berlyant    schedule 16.01.2021