Эквивалент date_format () в BigQuery - PullRequest
0 голосов
/ 20 февраля 2019

В моей таблице есть столбец даты, который содержит строку в формате 2017-08-05 09-AM, и я пытаюсь отформатировать его так, чтобы был столбец Дата с типом даты и столбец Время стип времени.

SELECT ID, DATE_FORMAT(a.date, "%Y-%d-%m") as date, DATE_FORMAT(a.date, "%T") as time, Symbol
FROM `crypto_market_data.BTC_1H` a
ORDER BY ID

Запрос выполняется так, как я хочу в MySQL, но date_format () не поддерживается в BigQuery.Мне интересно, есть ли подобный способ приведения моей строковой даты к отдельному объекту даты и времени.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Ниже для BigQuery Standard SQL

#standardSQL
SELECT id, Symbol,
  DATE(PARSE_DATETIME('%Y-%m-%d %H-%p', a.date)) AS `date`,
  TIME(PARSE_DATETIME('%Y-%m-%d %H-%p', a.date)) AS time
FROM `project.dataset.table` a

Вы можете протестировать, поиграть с выше, используя фиктивные данные, как в примере ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 id, '2017-08-05 09-AM' `date`, 'x' Symbol UNION ALL
  SELECT 2, '2019-02-05 12-AM', 'y' UNION ALL
  SELECT 3, '2019-01-31 11-PM', 'z'
)
SELECT id, Symbol,
  DATE(PARSE_DATETIME('%Y-%m-%d %H-%p', a.date)) AS `date`,
  TIME(PARSE_DATETIME('%Y-%m-%d %H-%p', a.date)) AS time
FROM `project.dataset.table` a
-- ORDER BY id

с результатом

Row id  Symbol  date        time     
1   1   x       2017-08-05  09:00:00     
2   2   y       2019-02-05  12:00:00     
3   3   z       2019-01-31  11:00:00     
0 голосов
/ 20 февраля 2019

В BigQuery доступна функция PARSE_DATETIME для анализа пользовательских форматов даты и времени.

В вашем случае это должно помочь:

select ID, extract(date from dt) as date, extract(time from dt) as time, Symbol from (
  select 
     a.ID as ID, 
     parse_datetime('%Y-%d-%m %H-%p', a.date) as dt, 
     a.Symbol as Symbol
  from 
     `crypto_market_data.BTC_1H` a
  order by a.ID
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...