如何使用standardSQL仅提取时间戳的一小时

时间:2018-07-26 14:58:13

标签: google-bigquery hour

如何使用standardSQL仅提取时间戳的一个小时。

我已经尝试了所有方法,但没有任何功能起作用。问题是我必须从一列中提取时间,并且此列的格式如下: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)

请帮帮我。 :(

2 个答案:

答案 0 :(得分:3)

在BigQuery Standard SQL中,您可以使用EXTRACT timestamp function来返回与您要检索的时间戳记部分相对应的INT64值,例如。

可用部分包括完整列表,您可以在链接的文档页面中查看完整列表,但在用例中,您可以直接引用HOUR运算符,以检索INT64表示形式。 TIMESTAMP type字段中的 hour 值。

#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

答案 1 :(得分:2)

  

如何使用standardSQL仅提取时间戳的一小时?

以下是用于BigQuery标准SQL

您可以使用EXTRACT(HOUR FROM yourTimeStampColumn)

例如:

SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP())   

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

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