我使用以下代码查找上个月的数据:
select * from table1 where timestamp > "2016-07-14 00:00:00"
" 2016-07-14 00:00:00"被手动挑选为今天前一个月的日期。但是,我不想更改日期" 2016-07-14 00:00:00"每次我跑它,所以我想知道是否有某种日期功能我可以用来实现这个目标?谢谢!
答案 0 :(得分:2)
您可以使用DATEADD()
:
SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE())
答案 1 :(得分:0)
看起来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)
答案 2 :(得分:0)
表达式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
找到有关这些以及其他日期和时间功能的更多详细信息