代码之家  ›  专栏  ›  技术社区  ›  Alexa289

如何在自定义查询中将起始日期参数转换为微秒?

  •  0
  • Alexa289  · 技术社区  · 3 年前

    我尝试使用Google Looker Studio中的自定义查询作为数据源。这里是从我的BigQuery中获取数据的自定义SQL

    WITH analytics_data AS (
      SELECT user_pseudo_id, 
             UNIX_MICROS(TIMESTAMP("2023-03-10 00:00:00", "+7:00")) AS start_day,
             3600*1000*1000*24*7 AS one_week_micros
      FROM `project.analytics_297774888.events_*`
      WHERE _table_suffix BETWEEN @DS_START_DATE AND @DS_END_DATE
    )
    

    正如你所看到的,我启用了日期范围参数,所以我使用 @DS_START_DATE @DS_END_DATE .我的问题就在这一行

    UNIX_MICROS(TIMESTAMP("2023-03-10 00:00:00", "+7:00")) AS start_day
    

    目前它是硬编码字符串( "2023-03-10 00:00:00" ).我想将日期字符串替换为 @DS_START_DATE 。如果我将代码更改为下面的代码,我将出现错误

    UNIX_MICROS(TIMESTAMP(@DS_START_DATE, "+7:00")) AS start_day
    

    我正在尝试获取Unix微秒(自1970-01-01以来的微秒数)的日期 @DS_START_DATE 00:00:00,时区UTC+7

    怎么做?

    2 回复  |  直到 3 年前
        1
  •  1
  •   Jaytiger    3 年前

    自从 @DS_START_DATE @DS_END_DATE 形状为 YYYYmmdd ,可以使用解析 PARSE_TIMESTAMP 就像下面的时区一样。

    UNIX_MICROS(PARSE_TIMESTAMP('%Y%m%d', @DS_START_DATE, '+7:00'))
    
        2
  •  0
  •   Juan Daniel Ornella    3 年前

    试试这个:

     WITH analytics_data AS (
      SELECT user_pseudo_id, 
             UNIX_MICROS(TIMESTAMP(CONCAT(@DS_START_DATE, " 00:00:00"), "+7:00")) AS start_day,
             3600*1000*1000*24*7 AS one_week_micros
      FROM `project.analytics_297774888.events_*`
      WHERE _table_suffix BETWEEN @DS_START_DATE AND @DS_END_DATE
    )
    
    推荐文章