【问题标题】:SELECT FROM TABLE by YEAR dynamicallySELECT FROM TABLE by YEAR 动态
【发布时间】:2020-03-10 12:55:08
【问题描述】:

我有一个查询(在 Oracle SQL Developer 中),目前已硬编码以选择 2019、2018 和 2017 年的所有记录。现在是 2020 年,我想将其更改为选择动态回溯三年,这样这个查询就可以在几年后工作,而无需更改代码。

我知道我可以找到从去年这个特定日期到年底的所有记录 -

SELECT * FROM TABLE
WHERE BOOKDATE >= add_months( sysdate, -12*1 );

所以这将给我从 2019 年 3 月 11 日到 2019 年底。但是我如何选择今年、去年和两年前(每年分别)的所有记录 - 而不是从这个日期开始具体来说? BOOKDATE 的格式为 DD-MON-YY。

【问题讨论】:

  • 你的 dbms 是什么?
  • Oracle SQL Server
  • Oracle和sql-server是不同的dbms,,,
  • 抱歉 - Oracle SQL Developer

标签: sql date select sysdate


【解决方案1】:

您可以extract 年份并对其进行计算:

SELECT *
FROM   mytable
WHERE  EXTRACT(YEAR FROM bookdate) - EXTRACT(YEAR FROM SYSDATE) <= 3

【讨论】:

  • 完美!谢谢!我不知道我可以从列数据本身中使用 EXTRACT。
【解决方案2】:

你可以这样尝试:

SELECT * 
    FROM TABLE 
    WHERE EXTRACT(YEAR from BOOKDATE) >= EXTRACT(YEAR from sysdate)-3

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多