我正在试图弄清楚如何在大查询中正确过滤日期。例如在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')
这些都没有奏效。文档提到创建一个分区表,但我不确定这是我需要做什么(我希望不是)。
请帮助:(
答案 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';