如何在数据阶段将天转换成年月日?

时间:2019-08-22 07:37:36

标签: date datediff datastage date-difference transformer

我需要在Datastage转换器中以年,月和日期格式计算年龄

Example       : SERVICE_DT = 02 Mar 1990
                Current date= 22 Aug 2019
Output        : 29 years 5 months 20 days

我在DS Transformer中开发了以下公式

((DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT))/365) :' Years ':( Mod(DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT),365)/30):' Months ': mod( Mod(DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT),365),30):' Days'

DSJobStartDate=Current date 上面的公式效果不佳,因为 服务日期1997-08-25它正在填充22年0个月1天,但正确的输出是21年11个月28天

((DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT))/365) :' Years ':( Mod(DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT),365)/30):' Months ': mod( Mod(DaysSinceFromDate(DSJobStartDate,TrimSpaces.SERVICE_DT),365),30):' Days'

服务日期1997-08-25它正在填充22年0个月1天,但正确的输出是21年11个月28天

1 个答案:

答案 0 :(得分:0)

您的公式没有考虑具有366天的年份,并假设月份和天数基于30。

这是功能的链接-https://www.ibm.com/support/knowledgecenter/en/SSZJPZ_11.7.0/com.ibm.swg.im.iis.ds.parjob.dev.doc/topics/r_deeref_Date_and_Time_Functions.html

例如,DaysSinceFromDate假定从V11.3开始由DaysSinceFromDate2代替。

您可能要考虑改用YearFromDate,MonthFromDate和MonthDayFromDate。