# #sql #date #google-bigquery
Вопрос:
у меня есть столбец под названием startup_date, который определен как СТРОКОВЫЙ тип данных в bigquery
который содержит значение типа «2001-09-09 02:19:38.0 UTC», а также значения null
пожалуйста, помогите использовать функцию преобразования для извлечения только значения даты, а не часов и минут
используемая ниже функция и получение сообщения об ошибке недопустимой строки даты и времени
ИЗВЛЕЧЕНИЕ(дата ИЗ даты-времени(СЛУЧАЙ, когда startup_date = » ТОГДА NULL, ИНАЧЕ startup_date ЗАКАНЧИВАЕТСЯ))
Комментарии:
1. Попробуйте
LEFT
функцию — cloud.google.com/bigquery/docs/reference/standard-sql/…
Ответ №1:
Функции DATE
и TIMESTAMP
делают именно то, что вы ищете. Если у вас есть строковый столбец , соответствующий его формату TIMESTAMP
, вы можете просто применить его. Затем DATE
будет извлечена только дата, и она позаботится о NULL
значениях.
WITH my_data AS
(
SELECT TIMESTAMP("2001-09-09 02:19:38.0 UTC") AS startup_date UNION ALL
SELECT NULL UNION ALL
SELECT "2021-10-10 07:29:30.0 UTC"
)
SELECT DATE(startup_date) as date FROM my_data
Ответ №2:
Вы можете попробовать substr[1] от 1 до 10, чтобы получить дату, а затем вы можете использовать функцию safe.parse_date[2].
SELECT safe.parse_date('%Y-%m-%d', substr(startup_date, 1, 10)) AS startup_date FROM you_dataset.your_table
Он возвращает это:
[1] https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions#substr
[2] https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#parse_date