我使用以下代码查找上月数据:
select * from table1 where timestamp > "2016-07-14 00:00:00"
手动选择“2016-07-14 00:00:00”作为今天前一个月的日期。但是,我不想每次运行时都更改日期“2016-07-14 00:00:00”,因此我想知道是否有某种日期函数可用于实现此目标?谢谢!
u0sqgete1#
表达式 now() - interval 1 month 提供一个月前的时间戳:
now() - interval 1 month
[localhost:21000] > select now() - interval 1 month; +-------------------------------+ | now() - interval 1 month | +-------------------------------+ | 2016-07-31 17:14:09.086188000 | +-------------------------------+
使用 trunc(..., 'DD') 你可以在一天开始的时候把它围起来:
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
w1e3prcc2#
你可以用 DATEADD() : SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE()) 文件:https://msdn.microsoft.com/en-gb/library/ms186819.aspx
DATEADD()
SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE())
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)
3条答案
按热度按时间u0sqgete1#
表达式
now() - interval 1 month
提供一个月前的时间戳:使用
trunc(..., 'DD')
你可以在一天开始的时候把它围起来:因此您的查询可以如下所示,例如:
有关这些函数以及其他日期和时间函数的详细信息,请访问http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_datetime_functions.html
w1e3prcc2#
你可以用
DATEADD()
:SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE())
文件:https://msdn.microsoft.com/en-gb/library/ms186819.aspx7kqas0il3#
看起来 Impala 有它自己的内置功能:http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_datetime_functions.html
我发现下面的查询很有用: