#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 дней назад во время выполнения запроса.