如何在Big查询中过滤日期

时间:2017-05-25 18:51:54

标签: mysql google-bigquery

我正在试图弄清楚如何在大查询中正确过滤日期。例如在MS sql中我做:

Select a, b, date from table_1 where date >= '2017-05-01' 

在大查询中,过滤器不起作用,它返回所有记录。我试过了

Select a, b, date from table_1 where date >= Date("2017-05-01")
Select a, b, date from table_1 where date >= 2017-05-01
Select a, b, date from table_1 where date >= timestamp('2017-05-01')

这些都没有奏效。文档提到创建一个分区表,但我不确定这是我需要做什么(我希望不是)。

请帮助:(

2 个答案:

答案 0 :(得分:4)

  

列日期是日期类型

尝试以下示例

  
#standardSQL
WITH table_1 AS (
  SELECT 1 AS a, 2 AS b, DATE '2017-04-20' AS date UNION ALL
  SELECT 1, 2, DATE '2017-05-20' 
)
SELECT *
FROM table_1
WHERE date > '2017-05-01'

输出

a   b   date     
1   2   2017-05-20   

答案 1 :(得分:1)

我怀疑你的date实际上是一个字符串。要在日期比较中使用它,您可以先将其解析为日期。例如,

#standardSQL
SELECT a, b, date
FROM table_1
WHERE PARSE_DATE('%Y%m%d', date) >= '2017-05-01';

您可以使用一些示例数据尝试查询:

#standardSQL
WITH table_1 AS (
  SELECT 1 AS a, 'foo' AS b, '20170501' AS date UNION ALL
  SELECT 2, 'bar', '20170101' UNION ALL
  SELECT 3, 'baz', '20170625'
)
SELECT a, b, date
FROM table_1
WHERE PARSE_DATE('%Y%m%d', date) >= '2017-05-01';