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

问题描述 投票:0回答:2

如何使用标准 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)

请帮助我。 :(

google-bigquery hour
2个回答
16
投票

如何使用标准 SQL 提取 timestamp 的小时?

以下适用于 BigQuery 标准 SQL

您可以使用

EXTRACT
(距离您的时间戳列一小时)

例如:

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'))

4
投票

在 BigQuery 标准 SQL 中,您可以使用

EXTRACT
时间戳函数 来返回与要检索的时间戳部分相对应的
INT64
值。

可用部件包括完整列表,您可以在链接的文档页面中查看该列表,但在您的用例中,您可以直接引用

HOUR
运算符,以便检索
INT64
表示的 hour
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
© www.soinside.com 2019 - 2024. All rights reserved.