BigQuery 中的 SparkSQL 等价物 unix_timestamp
SparkSQL equivalent in BigQuery unix_timestamp
我试图理解以下行并在 BigQuery 中编写其等价物 SQL:
from_unixtime(unix_timestamp('2019-01-15', 'yyyy-MM-dd') - 900)
SparkSQL 中的这一行到底是做什么的,在 BigQuery 语法中这行是什么?
据我所知,它执行以下操作:
- 将字符串
2019-01-15
转换为 unix 时间戳(# seconds since JAN 01 1970)
- 从 unix 时间戳中减去 900 秒(15 分钟)
- 将 Unix 时间 (
INT64
) 转换为时间戳数据类型
基本上,它从 2019-01-15
中减去 15 分钟。使用 SQL 有一种更简洁的方法,这里有一个 SQL 查询将它们一起显示:
select
PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15') original_timestamp,
-- The equivalent expression to the Spark one you have
TIMESTAMP_SECONDS(UNIX_SECONDS(PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15')) - 900) original_expression,
-- Use this instead which does the same thing
TIMESTAMP_ADD(PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15'), interval - 15 minute) more_concise
结果:
我试图理解以下行并在 BigQuery 中编写其等价物 SQL:
from_unixtime(unix_timestamp('2019-01-15', 'yyyy-MM-dd') - 900)
SparkSQL 中的这一行到底是做什么的,在 BigQuery 语法中这行是什么?
据我所知,它执行以下操作:
- 将字符串
2019-01-15
转换为 unix 时间戳(# seconds since JAN 01 1970) - 从 unix 时间戳中减去 900 秒(15 分钟)
- 将 Unix 时间 (
INT64
) 转换为时间戳数据类型
基本上,它从 2019-01-15
中减去 15 分钟。使用 SQL 有一种更简洁的方法,这里有一个 SQL 查询将它们一起显示:
select
PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15') original_timestamp,
-- The equivalent expression to the Spark one you have
TIMESTAMP_SECONDS(UNIX_SECONDS(PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15')) - 900) original_expression,
-- Use this instead which does the same thing
TIMESTAMP_ADD(PARSE_TIMESTAMP("%Y-%m-%d", '2019-01-15'), interval - 15 minute) more_concise
结果: