代码之家  ›  专栏  ›  技术社区  ›  whalesboy

Oracle-获取过去一年的数据(动态)

  •  0
  • whalesboy  · 技术社区  · 7 年前

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

    表:BookingTable

    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
    

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tim Biegeleisen    7 年前

    您可以使用 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