datastage - 如何使用 OCONV 减去日期
问题描述
背景:我负责使用 datastage 创建数据库提取。我们拥有超过 5 年的 CreatedDt(日期数据类型)数据。在导出查询中,我需要为 CreatedDt 添加一个 BETWEEN 子句。因为数据阶段作业是通用化和参数化的,所以我需要在序列中计算日期。
例如: Select * from tableA where CreatedDt BETWEEN <<start Date>> and <<End Date>>
对于其中一个查询,我需要返回四个月并获取 3 个月的数据(跳过现在的上个月)。例如:
假设今天的日期:02/22/2019
我需要:
Start Date: 10/01/2018
End Date: 12/31/2018
(基本上一个月前跳过,去三个月)
我知道这意味着正在使用以下计算:
- 从“今天”中减去(两次)
- 转到月初(开始日期)
- 转到本月的最后一天(结束日期)
我正在使用这个公式:
OConv(Iconv(Date(),"D/YMD[4,2,2]") + 1), "D/YMD[4,2,2]")
据我了解,“+1”代表按天加/减。使用前面提到的计算问题。
我试过:
OConv(Iconv(Date(),"D/YM[4,2]") + 1), "D/YMD[4,2,2]")
以为我是一个月+1,但这最终离我的目标点差了好几年。
我需要知道如何在给定日期执行我需要的操作。或者,如果有另一种方式,我会更开放。
谢谢
解决方案
StartDate Oconv(Date() - 2, "D-YM[4,2]") : "-01"
EndDate Oconv(Iconv((Oconv(Date(), "DY") : "-" : Oconv(Date(), "DM") + 4 : "-01") - 1, "DYMD"), "D- YMD[4,2,2]")
此结束日期计算适用于 1 月至 8 月。调整年份和月份的数学并包装在 If..Then..Else 构造中以处理其他月份。
推荐阅读
- javascript - d3 投影 geoMercator 不返回
- python - 工厂调用备用构造函数(类方法)
- symfony - 未调用身份验证事件
- mysql - 如果可能,编写单个 SQL 查询?
- php - 更改 Wordpress 主菜单链接上的悬停颜色
- python-3.x - 索引错误 - 对于文件中的行:line.split 为 [1] 和 [2]
- c++ - 这个最大功能体面吗?
- angularjs - 在拆分中使用多个分隔符
- java - 如何在spring boot中异步运行多个选择查询并收集所有结果
- c# - 升级到 Fall Creators 会导致 UWP 动画失败并显示“未检测到已安装的组件。未指定动画目标”。