2017-07-12 80 views
0

我经常使用传统的SQL如下运行数据的过去N天的查询(典型地为14或30)在大量查询:使用BIGQUERY表通配符相对日期范围和标准SQL

SELECT 
    … 
    FROM 
    TABLE_DATE_RANGE([XXX_], DATE_ADD(CURRENT_TIMESTAMP(), -30, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), 0, 'DAY')) 
    WHERE 
    … 

我想切换此查询以使用标准SQL而不是传统SQL。我知道如何使用通配符表示XXX_YYYYMMDD,并且我知道如何使用XXX_2017*之类来表示特定范围的日期,但我不知道如何表达相对范围,例如过去30天。

如何将上述查询转换为标准SQL?

回答

1

看看这对你的作品:

SELECT 
    date 
FROM `dataset.table_*` 
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)) AND FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 0 DAY)) 
GROUP BY date 
ORDER BY DATE 

凡在这个例子中,通配符格式"%Y%m%d"选择日期。您可以选择哪种格式更适合您的通配符选择。