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 语法中这行是什么?

据我所知,它执行以下操作:

  1. 将字符串 2019-01-15 转换为 unix 时间戳(# seconds since JAN 01 1970)
  2. 从 unix 时间戳中减去 900 秒(15 分钟)
  3. 将 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

结果: