mysql 如何在大查询中筛选日期

ibps3vxo  于 2023-10-15  发布在  Mysql
关注(0)|答案(3)|浏览(106)

我试图弄清楚如何在大查询中正确过滤日期。例如在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')

这些都没用。文档中提到了创建分区表,但我不确定这是我需要做的(我希望不是)。
请帮忙:(

bis0qfac

bis0qfac1#

列date是日期类型
试试下面的例子

#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
7gyucuyw

7gyucuyw2#

我怀疑你的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';
nmpmafwu

nmpmafwu3#

你可以在BigQuery中正确地过滤日期--

SELECT a, b, date
FROM table_1
WHERE DATE(date) >= DATE('2017-05-01');

试试另一种方式->

SELECT a, b, date
FROM table_1
WHERE TIMESTAMP(date) >= TIMESTAMP('2017-05-01');

要确保这些方法正确运行,请确保table_1中的date列是合适的日期或时间戳数据类型。给出的日期格式('2017 -05- 01')符合BigQuery的正常日期格式。

相关问题