【问题标题】:display all the 1year back from current data in the table in db2显示 db2 表中当前数据 1 年前的所有数据
【发布时间】:2020-10-23 01:05:30
【问题描述】:
cid name dob(timstamp dtype)
101  x    11-02-2019
301  y    12-12-2019
901  z    21-07-2018
111  a    02-07-2020

这是我的桌子。我想从当前日期提取最近 1 年的记录。所以我的输出应该是

 cid name   dob
    101  x    11-02-2019
    301  y    12-12-2019
    111  a    02-07-2020

【问题讨论】:

  • 自当前日期起最近 1 年 不包括 11-02-2019(我假设 11 是日期,2 是月份)。

标签: sql database date db2 db2-400


【解决方案1】:

WHERE子句中设置dob大于当前日期减去1年的条件:

select *
from tablename
where dob >= current_date - 1 year

如果你想要当前和上一年的所有行:

select *
from tablename
where year(current_date) - year(dob) in (0, 1)

请参阅demo

【讨论】:

  • 第一次遇到一些 sql-401 错误,第二次解决方案在数据工作室 db2 中没有给出预期的答案。
  • @pooja 您可以在演示中看到两个查询在语法上都是正确的。第二个查询准确返回您预期结果的行。所以我猜你没有正确使用查询。
  • 你现在可以使用第二个了。第一个不受数据工作室 db2 支持。在第二个查询中,如果我想显示过去 3 年的记录,我需要在查询中做哪些更改?你能帮忙解决一下吗
  • 更改 where 子句:where year(current_date) - year(dob) between 0 and 3
【解决方案2】:

您可以通过减去当前年份来获取记录。

select cid, from t1 where year(dob) = year(getdate())-1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2020-12-17
    • 1970-01-01
    • 2015-04-22
    • 2019-08-17
    • 1970-01-01
    相关资源
    最近更新 更多