sql/impala:动态确定最新的月份间隔

mnowg1ta  于 2021-06-26  发布在  Impala
关注(0)|答案(3)|浏览(373)

我使用以下代码查找上月数据:

select * from table1 where timestamp > "2016-07-14 00:00:00"

手动选择“2016-07-14 00:00:00”作为今天前一个月的日期。但是,我不想每次运行时都更改日期“2016-07-14 00:00:00”,因此我想知道是否有某种日期函数可用于实现此目标?谢谢!

u0sqgete

u0sqgete1#

表达式 now() - interval 1 month 提供一个月前的时间戳:

[localhost:21000] > select now() - interval 1 month;
+-------------------------------+
| now() - interval 1 month      |
+-------------------------------+
| 2016-07-31 17:14:09.086188000 |
+-------------------------------+

使用 trunc(..., 'DD') 你可以在一天开始的时候把它围起来:

[localhost:21000] > select trunc(now() - interval 1 month, 'DD');
+---------------------------------------+
| trunc(now() - interval 1 month, 'dd') |
+---------------------------------------+
| 2016-07-31 00:00:00                   |
+---------------------------------------+

因此您的查询可以如下所示,例如:

select * from table1 where timestamp > trunc(now() - interval 1 month, 'DD');

有关这些函数以及其他日期和时间函数的详细信息,请访问http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_datetime_functions.html

w1e3prcc

w1e3prcc2#

你可以用 DATEADD() : SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE()) 文件:https://msdn.microsoft.com/en-gb/library/ms186819.aspx

7kqas0il

7kqas0il3#

看起来 Impala 有它自己的内置功能:http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_datetime_functions.html
我发现下面的查询很有用:

select * from table1 where timestamp > add_months(now(), -1)

相关问题