Как я могу извлечь только час отметки времени с помощью стандартного SQL

Как я могу извлечь только час метки времени с помощью стандартного SQL.

Я все перепробовал, и ни одна функция не работает. Проблема в том, что мне нужно извлечь время из столбца, и этот столбец имеет следующий формат: 2018-07-09T02: 40: 23.652Z

Если я просто поставлю дату, это сработает, но если я поставлю столбец, он выдаст ошибку ниже:

Syntax error: Expected ")" but got identifier "searchIntention" at [4:32]

Следуйте запросу ниже:

#standardSQL
select TOTAL, dia, hora FROM 
(SELECT cast(replace(replace(searchIntention.createdDate,'T',' '),'Z','')as 
DateTime) AS DIA, 
FORMAT_DATETIME("%k", DATETIME searchIntention.createdDate) as HORA,
count(searchintention.id) as Total
from `searchs.searchs2016626`
GROUP BY DIA)

Помогите, пожалуйста. :(


person Layla Comparin    schedule 26.07.2018    source источник


Ответы (2)


Как я могу извлечь только час из метки времени с помощью стандартного SQL?

Ниже приведен стандартный SQL BigQuery.

Вы можете использовать EXTRACT (ЧАС ОТ yourTimeStampColumn)

Например:

SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP())   

or

SELECT EXTRACT(HOUR FROM TIMESTAMP '2018-07-09T02:40:23.652Z')

or

SELECT EXTRACT(HOUR FROM TIMESTAMP('2018-07-09T02:40:23.652Z'))
person Mikhail Berlyant    schedule 26.07.2018
comment
Это неверно. он ДЕЙСТВИТЕЛЬНО существует в BigQuery Standard SQL! Пожалуйста, попробуй! - person Mikhail Berlyant; 26.07.2018
comment
вы можете использовать EXTRACT для типа DATE - конечно, в этом случае HOUR не будет доступен - но если вы используете его против TIMESTAMP - он позволяет использовать HOUR! поэтому убедитесь, что вы используете метку времени, а не дату - person Mikhail Berlyant; 26.07.2018
comment
Оно работает!! Спасибо. : D - person Layla Comparin; 26.07.2018
comment
конечно, рассмотрите возможность голосования за ответ, если он был полезен - похоже, что это было: o) - person Mikhail Berlyant; 26.07.2018
comment
что, если мне нужно час до секунды от current_timestamp - person Dhirendra Gautam; 29.05.2020

В BigQuery Standard SQL вы можете использовать EXTRACT функция отметки времени, чтобы вернуть значение INT64, соответствующее части отметки времени, которую вы хотите получить, например.

Доступные части включают полный список, который вы можете проверить на связанной странице документации, но в вашем случае использования вы можете напрямую обратиться к оператору HOUR, чтобы получить INT64 представление значения часа в поле типа TIMESTAMP.

#standardSQL
# Create a table
WITH table AS (
  SELECT TIMESTAMP("2018-07-09T02:40:23.652Z") time
  )
# Extract values from a Timestamp expression
SELECT
  EXTRACT(DAY FROM time) as day,
  EXTRACT(MONTH FROM time) as month,
  EXTRACT(YEAR FROM time) as year,
  EXTRACT(HOUR FROM time) AS hour,
  EXTRACT(MINUTE FROM time) as minute,
  EXTRACT(SECOND from time) as second
FROM
  table
person dsesto    schedule 26.07.2018