【问题标题】:Adding days to date in Netezza在 Netezza 中添加日期
【发布时间】:2020-05-25 18:23:12
【问题描述】:

我有一列包含日期(reg_dates),另一列包含每个 id 的天数(num_days)。我想将天数(num_days)添加到日期(reg_dates)列中,为每个 id 创建一个新列(new_date)。

到目前为止,我已经尝试过:

  1. select *, sum(date(reg_dates) + interval(num_days)) over(partition by id) as new_date from data;

  2. select *, sum(reg_dates) over(partition by id) as new_date from data; 到目前为止没有运气。

ADD_MONTHS 有效,但 add_days 在 netezza 中似乎不存在。

我还计划尝试将日期转换为月份并使用 ADD_MONTHS,但想看看在 netezza 中是否有更直接的方法。

【问题讨论】:

  • 样本数据和所需结果会有所帮助。

标签: sql netezza


【解决方案1】:

这是你想要的吗?

select d.*, reg_date + num_days * interval '1 day' as new_date
from data;

根据描述,我不确定您为什么要使用窗口函数。

【讨论】:

  • 我正在使用窗口函数,因为每个 id 都有多行观察结果。例如:学校允许学生根据多个学生的需求和同一本书的可用数量来借书 30、90、15 天。学生可以选择将这本书带回图书馆,并在 30、45、90 天后再取。因此,目标是根据借出的天数计算每本书的新归还日期。我在您建议的代码中添加了 over 子句,但仍然无法正常工作。
  • 我认为你是对的,我以错误的方式处理这个问题。我应该做的是把我的整个方法分成两部分,计算新日期,然后在下一步聚合。谢谢戈登! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
相关资源
最近更新 更多