Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle-从去年获取数据(动态)_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql Oracle-从去年获取数据(动态)

Sql Oracle-从去年获取数据(动态),sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我对从数据库中获取数据有一些疑问,这些数据需要从去年获取(动态的,非硬编码的) 表:预订表 bookingID userID Timebooked 1 0003 10-May-2016 2 0001 10-May-2018 3 0001 10-Apr-2017 4 0001 10-Apr-2017 5 0003 10-Jan-2011

我对从数据库中获取数据有一些疑问,这些数据需要从去年获取(动态的,非硬编码的)

表:预订表

bookingID   userID     Timebooked 
1             0003    10-May-2016
2             0001    10-May-2018
3             0001    10-Apr-2017
4             0001    10-Apr-2017
5             0003    10-Jan-2011
6             0006    10-Apr-2018
7             0003    10-Apr-2016
8             0006    10-Apr-2015
9             0001    10-Apr-2017
下面是我的代码

SELECT userID, COUNT(userID) AS count
FROM BookingTable 
GROUP BY userID
HAVING COUNT(userID) >2
这是我上面查询的结果

userID  count
0001      4
0003      3

从表中,我想添加从去年到当前日期的预定时间

您可以使用
sysdate-间隔“1”年
表示一年前的今天日期:

SELECT userID, COUNT(userID) AS count
FROM BookingTable 
WHERE Timebooked BETWEEN SYSDATE - INTERVAL '1' year AND SYSDATE
GROUP BY userID
HAVING COUNT(userID) > 2
正如@Wernfried在下面正确指出的那样,在闰年的2月29日,上述预测将失败。相反,请使用以下解决方法:

WHERE Timebooked BETWEEN ADD_MONTHS(SYSDATE, -12) AND SYSDATE

您可以使用
sysdate-interval'1'year
表示一年前的今天的日期:

SELECT userID, COUNT(userID) AS count
FROM BookingTable 
WHERE Timebooked BETWEEN SYSDATE - INTERVAL '1' year AND SYSDATE
GROUP BY userID
HAVING COUNT(userID) > 2
正如@Wernfried在下面正确指出的那样,在闰年的2月29日,上述预测将失败。相反,请使用以下解决方法:

WHERE Timebooked BETWEEN ADD_MONTHS(SYSDATE, -12) AND SYSDATE

Hello Time,在添加“WHERE Timebooked>=SYSDATE-INTERVAL'1'year”之后,它将显示(不是一个分组表达式)是否为
Timebooked
日期列?类型是什么?日期数据类型不为空谢谢你的帮助@Tim Biegeleisen,我刚刚意识到我缺少了一些表达式,一切都解决了!感谢您的帮助
-间隔“1”年将在2月29日失败。考虑使用<代码> AddiPo月(SysDead,-12) = SysDeal-间隔”1’年后,它将出现(不是由表达式组成的组)是“代码>时间预订< /Cord>日期栏”类型是什么?日期数据类型不为空谢谢你的帮助@Tim Biegeleisen,我刚刚意识到我缺少了一些表达式,一切都解决了!感谢您的帮助
-间隔“1”年将在2月29日失败。考虑使用<代码> AddiPo月(SysDead,-12)< /Cord>