Получить последние 30 дней из таблицы в SQL с помощью YYYY-MM-DDThh-MM-SS (BigQuery)

#sql #google-bigquery

# #sql #google-bigquery

Вопрос:

В BigQuery у меня есть таблица значений с одним столбцом, содержащим даты в формате YYYY-MM-DDThh-MM-SS, например, 2020-07-24T20:13:35.

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

Я полагаю, что я узнал, как это сделать для даты, отформатированной как ГГГГ-ММ-ДД: (Имя столбца — «даты»)

ВЫБЕРИТЕ DATE_SUB(даты, ИНТЕРВАЛ 30 ДНЕЙ)

Однако это не работает, если оно отформатировано как YYYY-MM-DDThh-MM-SS.

Ответ №1:

Вы бы просто использовали:

 where col > datetime_add(current_datetime, interval -30 day)
 

или

 where col > timestamp_add(current_timestamp, interval -30 day)
 

в зависимости от того, является ли столбец datetime или timestamp .

Ответ №2:

Вы также можете использовать

 Select * from table where date(date_column) >= date_sub(current_date, interval 30 day)
 

Таким образом, вы получите все записи за 30 дней до этого, начиная с 12 часов ночи. Использование current_datetime или current_timestamp даст результаты только позднее, чем 30 дней назад во время выполнения запроса.