<?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: Find All Full Years Between Two Dates in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984722#M379722</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ date_01 :mmddyy10. date_02 :mmddyy10.;
format date: yymmdd10.;
datalines;
158 7/15/1994 9/9/2004
268 6/10/2003 8/21/2007
;

data want;
set have;
do date=date_01 to intnx('year',date_02,0)-1;
 if day(date)=1 and month(date)=1 then do;
   want_01=date;
   want_02=intnx('year',date,0,'e');
   output;
 end;
end;
format want_01 want_02 yymmdd10.;
drop date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 13 Mar 2026 06:41:44 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2026-03-13T06:41:44Z</dc:date>
    <item>
      <title>Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984695#M379711</link>
      <description>&lt;P&gt;Hello.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I was wondering if anyone could give me a hint on how to determine each full year between two dates? I later need to find an incident between those two dates. I don't have any prepared code since this is just a "I wonder if SAS can do this?"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border="1" width="99.99999999999997%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;ID&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;date_01&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;date_02&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;ID&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;want_01&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;want_02&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;158&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;7/15/1994&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;9/9/2004&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;**&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;**&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;268&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;6/10/2003&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;8/21/2007&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/1995&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/1995&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/1996&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/1996&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/1997&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/1997&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/1998&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/1998&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/1999&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/1999&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2000&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2000&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2001&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2001&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2002&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2002&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;158&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2003&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2003&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;268&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;**&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;**&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;268&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2004&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2004&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;268&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2005&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2005&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714285%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="14.285714285714286%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="11.552028218694884%"&gt;268&lt;/TD&gt;
&lt;TD width="14.02116402116402%"&gt;1/1/2006&lt;/TD&gt;
&lt;TD width="17.28395061728395%"&gt;12/31/2006&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 20:14:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984695#M379711</guid>
      <dc:creator>Jeff_DOC</dc:creator>
      <dc:date>2026-03-12T20:14:59Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984700#M379712</link>
      <description>&lt;P&gt;You might have problems trying to make SAS prepare your coffee, but when it comes to date calculations, SAS has all tools needed, particularly the &lt;A href="https://documentation.sas.com/doc/de/pgmsascdc/9.4_3.5/lefunctionsref/p10v3sa3i4kfxfn1sovhi5xzxh8n.htm" target="_blank" rel="noopener"&gt;INTNX&lt;/A&gt; function:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ date_01 :mmddyy10. date_02 :mmddyy10.;
format date: yymmdd10.;
datalines;
158 7/15/1994 9/9/2004
268 6/10/2003 8/21/2007
;

data want;
set have;
format want_01 want_02 yymmdd10.;
output;
want_01 = intnx("year",date_01,1,"b");
do while (want_01 lt intnx("year",date_02,0,"b"));
  want_02 = intnx("year",want_01,0,"e");
  output;
  want_01 = intnx("year",want_01,1,"b");
end;
drop date_01 date_02;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 20:39:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984700#M379712</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2026-03-12T20:39:17Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984701#M379713</link>
      <description>&lt;P&gt;Something like this?&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID (date_01 date_02) (:mmddyy10.);
format date_01 date_02 date9.;
datalines;
158	7/15/1994 9/9/2004
268	6/10/2003 8/21/2007
;
run;

proc sort data=have; by ID; run;

data want;
 set have;
 by ID;
 do counter = 0 to intck('year',date_01,date_02);
    year_start = intnx('year',date_01,counter);
	year_stop  = intnx('year',date_01,counter+1) - 1;
    output;
 end;
 format year_start year_stop date9.;
run;

data want;
 set want;
 by ID;
 if (first.ID and date_01 &amp;gt; year_start) then delete;
 if (last.ID  and date_02 &amp;lt; year_stop ) then delete;
run;
/* end of program */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;BR, Koen&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 20:38:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984701#M379713</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2026-03-12T20:38:16Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984702#M379714</link>
      <description>&lt;P&gt;I see now that&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;&amp;nbsp;has used the (optional) "alignment" as fourth argument in the INTNX function.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;'beginning' (or 'b') and 'end' (or 'e')&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That's of course better than my construction (just above) to find 'end'.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR, Koen&lt;/P&gt;</description>
      <pubDate>Thu, 12 Mar 2026 20:45:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984702#M379714</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2026-03-12T20:45:54Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984722#M379722</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input id $ date_01 :mmddyy10. date_02 :mmddyy10.;
format date: yymmdd10.;
datalines;
158 7/15/1994 9/9/2004
268 6/10/2003 8/21/2007
;

data want;
set have;
do date=date_01 to intnx('year',date_02,0)-1;
 if day(date)=1 and month(date)=1 then do;
   want_01=date;
   want_02=intnx('year',date,0,'e');
   output;
 end;
end;
format want_01 want_02 yymmdd10.;
drop date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Mar 2026 06:41:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984722#M379722</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2026-03-13T06:41:44Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984732#M379724</link>
      <description>&lt;P&gt;How do you want to handle the edge case of date_01=01/01/2023 date_02=12/31/2023?&amp;nbsp; Do you want that to be considered a full year?&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 13 Mar 2026 12:20:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984732#M379724</guid>
      <dc:creator>Quentin</dc:creator>
      <dc:date>2026-03-13T12:20:38Z</dc:date>
    </item>
    <item>
      <title>Re: Find All Full Years Between Two Dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984742#M379726</link>
      <description>&lt;P&gt;Also ... you said "&lt;SPAN&gt;I later need to find an incident between those two dates.&lt;/SPAN&gt;".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Perhaps you’re taking an unnecessary extra step (an unnecessary detour)?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, if I want to know how often a variable takes on a value between 900 and 1000 … and this on an annual basis … I can simply use a format.&lt;/P&gt;
&lt;P&gt;Like here:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc means data=sashelp.citiday N;
 where SNYDJCM between 900 and 1000;
 class  date;
 var    SNYDJCM;
 format date year.;
run; 
/* end of program */&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[EDIT]:&amp;nbsp;Please note: the programme above does not take into account incomplete years&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR, Koen&lt;/P&gt;</description>
      <pubDate>Fri, 13 Mar 2026 13:23:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Find-All-Full-Years-Between-Two-Dates/m-p/984742#M379726</guid>
      <dc:creator>sbxkoenk</dc:creator>
      <dc:date>2026-03-13T13:23:23Z</dc:date>
    </item>
  </channel>
</rss>

