我使用下面的代码来找到最后一个月的数据:SQL /帕拉:动态地确定最近一个月的间隔
select * from table1 where timestamp > "2016-07-14 00:00:00"
“2016年7月14日00:00:00”是手动选为今天前一个月的日期。但是,每次运行它时我都不想更改日期“2016-07-14 00:00:00”,所以我想知道是否有某种日期函数可用于实现此目标?谢谢!
我使用下面的代码来找到最后一个月的数据:SQL /帕拉:动态地确定最近一个月的间隔
select * from table1 where timestamp > "2016-07-14 00:00:00"
“2016年7月14日00:00:00”是手动选为今天前一个月的日期。但是,每次运行它时我都不想更改日期“2016-07-14 00:00:00”,所以我想知道是否有某种日期函数可用于实现此目标?谢谢!
您可以使用DATEADD()
:
SELECT * FROM table1 WHERE timestamp > DATEADD(month, -1, GETDATE())
看起来像黑斑羚有它自己的内置功能: 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)
表达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');
你可以在012找到关于这些和其他日期和时间函数的更多细节
我上面试过,但是得到这个错误:HiveServer2Error:AnalysisException:无法解析列/字段引用:'month' – Edamame