Date 将月份添加到季度日期

Date 将月份添加到季度日期,date,sas,Date,Sas,我有两行代码来确定前几个季度的开始和结束日期 put(INTNX('Quarter',today(),-1,'B'),MMDDYY10.) put(INTNX('Quarter',today(),-1,'E'),MMDDYY10.) 上述开始日期显示为2019年10月1日 上述截止日期显示为2019年12月31日 但是,我需要在每个日期加上一个月,以等于以下日期 2019年11月1日 2019年1月31日 我尝试将上述内容嵌套在另一个intnx函数中,但它只返回空白。非常感谢您的想法和帮助。试

我有两行代码来确定前几个季度的开始和结束日期

put(INTNX('Quarter',today(),-1,'B'),MMDDYY10.)
put(INTNX('Quarter',today(),-1,'E'),MMDDYY10.)
上述开始日期显示为2019年10月1日 上述截止日期显示为2019年12月31日

但是,我需要在每个日期加上一个月,以等于以下日期

2019年11月1日 2019年1月31日

我尝试将上述内容嵌套在另一个intnx函数中,但它只返回空白。非常感谢您的想法和帮助。

试试看

data _null_;
   * compute date values;

    * start of second month in prior quarter;
    start_date = intnx('MONTH', intnx ('QUARTER', today(), -1, 'B'), 1);

    * end of first month after prior quarter;
    end_date   = intnx('MONTH', intnx ('QUARTER', today(), -1, 'E'), 1, 'E');

    * log date values using a desired representation format;

    put (start_date end_date) (=mmddyy10./);

    * store a date value representation in a variable;
    * (this is not typically a desired thing to do);

    start_ymd = put (start_date, mmddyy10.);
    end_ymd   = put (end_date,   mmddyy10.);

    * log the string values that were forced to represent a date (via PUT);

    put start_ymd= / end_ymd=;
run;
日志应显示(2020年1月6日)

试一试

日志应显示(2020年1月6日)


下面的方法非常有效

put(INTNX('Month',INTNX('Quarter',today(),-1,'B'),+1,'B'),mmddyyy10。)


put(INTNX('Month',INTNX('Quarter',today(),-1,'E'),+1,'E'),mmddyyy10。)

下面的操作非常有效

put(INTNX('Month',INTNX('Quarter',today(),-1,'B'),+1,'B'),mmddyyy10。)


put(INTNX('Month',INTNX('Quarter',today(),-1,'E'),+1,'E'),mmddyyy10。)

请展示您的尝试,特别是“将上述内容嵌套到另一个INTNX函数中”。“这是正确的方法。”里扎。谢谢你的意见。我试着做下面的人。INTNX('Month',put(INTNX('quartery',today(),-1,'B'),MMDDYY10.),+1,'B');确保您了解日期值、格式化日期值和作为日期字符串表示形式的数据之间的差异。INTNX函数处理的是日期值,而不是它们的字符串表示形式(这可能是由PUT引起的),PUT的最后一点让我精确地找到了需要的地方。这很好用。谢谢大家。put(INTNX('Month',INTNX('quartery',today(),-1,'B'),+1,'B'),MMDDYY10.);put(INTNX('Month',INTNX('Quarter',today(),-1,'E'),+1,'E'),mmddyyy10.);请展示您的尝试,特别是“将上述内容嵌套在另一个intnx函数中”。“这是正确的方法。”里扎。谢谢你的意见。我试着做下面的人。INTNX('Month',put(INTNX('quartery',today(),-1,'B'),MMDDYY10.),+1,'B');确保您了解日期值、格式化日期值和作为日期字符串表示形式的数据之间的差异。INTNX函数处理的是日期值,而不是它们的字符串表示形式(这可能是由PUT引起的),PUT的最后一点让我精确地找到了需要的地方。这很好用。谢谢大家。put(INTNX('Month',INTNX('quartery',today(),-1,'B'),+1,'B'),MMDDYY10.);put(INTNX('Month',INTNX('Quarter',today(),-1,'E'),+1,'E'),mmddyyy10.);它不应该是+1,只有1。你的答案是正确的,但除非你需要一个字符日期,否则我建议不要在转换中使用PUT,它不应该是+1,而应该是1。您的答案是正确的,但除非您需要字符日期,否则我建议不要在转换中使用PUT。
start_date=11/01/2019
end_date=01/31/2020
start_ymd=11/01/2019
end_ymd=01/31/2020