2016-08-14 67 views
0

我使用下面的代码来找到最后一个月的数据:SQL /帕拉:动态地确定最近一个月的间隔

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

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

回答

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'); 

你可以在012找到关于这些和其他日期和时间函数的更多细节