<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to get range of date between start and end date in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836613#M330791</link>
    <description>&lt;P&gt;So you have data like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input id start_date :date. end_date :date. ;
  format start_date end_date date9. ;
cards;
1 01JUL2017 01NOV2017
2 01AUG2017 01FEB2018
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can use INTNX() to increment by month.&amp;nbsp; You can use INTCK() to determine how many months to output.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  do offset=0 to intck('month',start_date,end_date);
    date = intnx('month',start_date,offset);
    output;
  end;
  format date date9.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;NOTE: I changed the name of the new variable to DATE as RANGE did not make any sense for a single date value.&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                start_
Obs    id         date     end_date    offset         date

  1     1    01JUL2017    01NOV2017       0      01JUL2017
  2     1    01JUL2017    01NOV2017       1      01AUG2017
  3     1    01JUL2017    01NOV2017       2      01SEP2017
  4     1    01JUL2017    01NOV2017       3      01OCT2017
  5     1    01JUL2017    01NOV2017       4      01NOV2017
  6     2    01AUG2017    01FEB2018       0      01AUG2017
  7     2    01AUG2017    01FEB2018       1      01SEP2017
  8     2    01AUG2017    01FEB2018       2      01OCT2017
  9     2    01AUG2017    01FEB2018       3      01NOV2017
 10     2    01AUG2017    01FEB2018       4      01DEC2017
 11     2    01AUG2017    01FEB2018       5      01JAN2018
 12     2    01AUG2017    01FEB2018       6      01FEB2018
&lt;/PRE&gt;</description>
    <pubDate>Mon, 03 Oct 2022 23:58:57 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2022-10-03T23:58:57Z</dc:date>
    <item>
      <title>How to get range of date between start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836605#M330787</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I have this table with a start and end date but I want a series of dates between the two dates as seen below.&lt;/P&gt;&lt;P&gt;Data have&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;start_date&lt;/TD&gt;&lt;TD&gt;end_date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1-Jul-17&lt;/TD&gt;&lt;TD&gt;1-Jul-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1-Aug-17&lt;/TD&gt;&lt;TD&gt;1-Feb-18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data&amp;nbsp;want&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;id&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;start_date&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;end_date&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;range&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Sep-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Oct-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jul-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Sep-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Oct-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Nov-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Dec-17&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Jan-18&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT size="2"&gt;2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Aug-17&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT size="2"&gt;1-Feb-18&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Mon, 03 Oct 2022 23:00:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836605#M330787</guid>
      <dc:creator>twix17</dc:creator>
      <dc:date>2022-10-03T23:00:11Z</dc:date>
    </item>
    <item>
      <title>Re: How to get range of date between start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836609#M330789</link>
      <description>&lt;P&gt;First question: Are your dates SAS date values? I ask because that will be needed to solve this. I also ask because the values you display are not in any of the "standard" date formats SAS uses.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second, you have to explain a lot of logic about how the output is to be generated. I cannot see any obvious way that&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;id&lt;/TD&gt;
&lt;TD&gt;start_date&lt;/TD&gt;
&lt;TD&gt;end_date&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;1-Jul-17&lt;/TD&gt;
&lt;TD&gt;1-Jul-17&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;generates enddates of 1 Nov 17 or "range" values in Aug, Sep, Oct of Nov.&lt;/P&gt;
&lt;P&gt;If you meant the end_date to be 1-Nov-17 then perhaps:&lt;/P&gt;
&lt;PRE&gt;data have;
   input id	start_date :date9.	end_date : date9.;
   format start_date end_date date9.;
datalines;
1	1-Jul-17	1-Nov-17
2	1-Aug-17	1-Feb-18
;

data want;
   set have;
   range = start_date;
   do until (range &amp;gt; end_date);
      output;
      range= intnx('month',range,1,'b');
   end;
   format range date9.;
run;&lt;/PRE&gt;
&lt;P&gt;Note the data step creating HAVE as the way to show example data. &lt;STRONG&gt;Which has been mentioned before.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The Intnx function increments date values. So the above add a date value for the beginning of a month until it exceeds the end date and uses the OUTPUT statement to control when the values are written to the output data set.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Oct 2022 23:39:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836609#M330789</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2022-10-03T23:39:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to get range of date between start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836613#M330791</link>
      <description>&lt;P&gt;So you have data like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input id start_date :date. end_date :date. ;
  format start_date end_date date9. ;
cards;
1 01JUL2017 01NOV2017
2 01AUG2017 01FEB2018
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can use INTNX() to increment by month.&amp;nbsp; You can use INTCK() to determine how many months to output.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  do offset=0 to intck('month',start_date,end_date);
    date = intnx('month',start_date,offset);
    output;
  end;
  format date date9.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;NOTE: I changed the name of the new variable to DATE as RANGE did not make any sense for a single date value.&lt;/P&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                start_
Obs    id         date     end_date    offset         date

  1     1    01JUL2017    01NOV2017       0      01JUL2017
  2     1    01JUL2017    01NOV2017       1      01AUG2017
  3     1    01JUL2017    01NOV2017       2      01SEP2017
  4     1    01JUL2017    01NOV2017       3      01OCT2017
  5     1    01JUL2017    01NOV2017       4      01NOV2017
  6     2    01AUG2017    01FEB2018       0      01AUG2017
  7     2    01AUG2017    01FEB2018       1      01SEP2017
  8     2    01AUG2017    01FEB2018       2      01OCT2017
  9     2    01AUG2017    01FEB2018       3      01NOV2017
 10     2    01AUG2017    01FEB2018       4      01DEC2017
 11     2    01AUG2017    01FEB2018       5      01JAN2018
 12     2    01AUG2017    01FEB2018       6      01FEB2018
&lt;/PRE&gt;</description>
      <pubDate>Mon, 03 Oct 2022 23:58:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836613#M330791</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-10-03T23:58:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to get range of date between start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836806#M330860</link>
      <description>&lt;P&gt;Oh yes. Thank you how did I miss that before posting? It worked.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sam&lt;/P&gt;</description>
      <pubDate>Tue, 04 Oct 2022 20:34:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836806#M330860</guid>
      <dc:creator>twix17</dc:creator>
      <dc:date>2022-10-04T20:34:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to get range of date between start and end date</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836807#M330861</link>
      <description>Thank you. Yes i wanted the end date for the first row to be 01NOV2017.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Sam</description>
      <pubDate>Tue, 04 Oct 2022 20:35:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-get-range-of-date-between-start-and-end-date/m-p/836807#M330861</guid>
      <dc:creator>twix17</dc:creator>
      <dc:date>2022-10-04T20:35:54Z</dc:date>
    </item>
  </channel>
</rss>

