如何使用标准SQL仅提取时间戳的小时数

Lay*_*rin 5 hour google-bigquery

如何使用标准SQL 仅提取时间戳的小时数。

我已经尝试了一切,但没有任何功能有效。问题是我必须从一列中提取时间,该列的格式如下:2018-07-09T02:40:23.652Z

如果我只输入日期,它会起作用,但是如果我输入该列,则会出现以下错误:

Syntax error: Expected ")" but got identifier "searchIntention" at [4:32]
Run Code Online (Sandbox Code Playgroud)

按照下面的查询:

#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)
Run Code Online (Sandbox Code Playgroud)

请帮我。:(

Mik*_*ant 9

如何使用标准SQL仅提取时间戳的小时数?

下面是 BigQuery 标准 SQL

您可以使用EXTRACT(HOUR FROM yourTimeStampColumn)

例如:

SELECT EXTRACT(HOUR FROM CURRENT_TIMESTAMP())   
Run Code Online (Sandbox Code Playgroud)

或者

SELECT EXTRACT(HOUR FROM TIMESTAMP '2018-07-09T02:40:23.652Z')
Run Code Online (Sandbox Code Playgroud)

或者

SELECT EXTRACT(HOUR FROM TIMESTAMP('2018-07-09T02:40:23.652Z'))
Run Code Online (Sandbox Code Playgroud)


dse*_*sto 5

在 BigQuery 标准 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
Run Code Online (Sandbox Code Playgroud)