<?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: define date range and generate date increments in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411649#M100632</link>
    <description>&lt;P&gt;I know what you mean. When I tried "yq" with WHERE clause, it produces something not what I want.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;They are all numerical date variables, format is DATE9. What I truly want is to have lagged 3 quarters dates based on the reporting date RDATE instead of lagging 12 months, here is the wrong result of using "yq":&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SAS Output&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;rdate yq endfyr begfyr &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd like to have, for example, endfyr&amp;nbsp;is 31MAR1980, the begfyr&amp;nbsp;should be 30JUN1979. Do you possibly know how to achieve that? Many thanks in advance!&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Wed, 08 Nov 2017 19:30:41 GMT</pubDate>
    <dc:creator>Jaaa</dc:creator>
    <dc:date>2017-11-08T19:30:41Z</dc:date>
    <item>
      <title>define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411613#M100618</link>
      <description>&lt;P&gt;Hello SAS professionals,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to define my obtained dataset with a date range from "1980Q1" to "2016Q4" and then generate a beginning date by lagging&amp;nbsp;3 quarters&amp;nbsp;at the reporting date. However, an empty dataset is produced by the following codes so there must be somewhere got wrong which I didn't notice. Thus, are there any professionals who can help with my coding?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My partial dataset is also attached here for your review.&amp;nbsp;Many thanks in advance!!! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SAS Output&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;Obs rdate yq quarter &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;1980Q1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let fq1= 198001; 
%let fq2= 201604;

* Make extract from Thomason Reuters Stock Ownership file;
data compx2;
   set MMIO_CUSIP;
   where quarter between &amp;amp;fq1 and &amp;amp;fq2;
   * create begin and end dates for fiscal year;
   format endfyr begfyr date9.;
   endfyr= rdate;
   begfyr= intnx('QTR',endfyr,-3,'beg');  /* intnx(interval, from, n, 'aligment') */
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 18:10:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411613#M100618</guid>
      <dc:creator>Jaaa</dc:creator>
      <dc:date>2017-11-08T18:10:49Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411642#M100630</link>
      <description>&lt;P&gt;Based on the posted data, you are using the wrong variable in the WHERE statement.&amp;nbsp; The values of YQ (not the values of QUARTER) would fall in the range defined by your macro variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If that's not the problem, you will need to supply more information about your data.&amp;nbsp; Which variables are character and which are numeric?&amp;nbsp; Which have formats applied?&amp;nbsp; Is RDATE really a date, or is it an eight-digit integer?&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 19:17:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411642#M100630</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-11-08T19:17:48Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411649#M100632</link>
      <description>&lt;P&gt;I know what you mean. When I tried "yq" with WHERE clause, it produces something not what I want.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;They are all numerical date variables, format is DATE9. What I truly want is to have lagged 3 quarters dates based on the reporting date RDATE instead of lagging 12 months, here is the wrong result of using "yq":&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;SAS Output&lt;/P&gt;&lt;DIV class="branch"&gt;&lt;DIV&gt;&lt;DIV align="center"&gt;rdate yq endfyr begfyr &lt;TABLE cellspacing="0" cellpadding="5"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19800331&lt;/TD&gt;&lt;TD&gt;198001&lt;/TD&gt;&lt;TD&gt;31MAR1980&lt;/TD&gt;&lt;TD&gt;01APR1979&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'd like to have, for example, endfyr&amp;nbsp;is 31MAR1980, the begfyr&amp;nbsp;should be 30JUN1979. Do you possibly know how to achieve that? Many thanks in advance!&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 08 Nov 2017 19:30:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411649#M100632</guid>
      <dc:creator>Jaaa</dc:creator>
      <dc:date>2017-11-08T19:30:41Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411657#M100634</link>
      <description>&lt;P&gt;For that, you need to change the INTNX interval.&amp;nbsp; INTNX returns the first day of the quarter.&amp;nbsp; You want to go back 9 months, not 3 quarters.&amp;nbsp; So this should get you there:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;begfyr&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;intnx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'month'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;endfyr&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;-9&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'end'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 19:44:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411657#M100634</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-11-08T19:44:17Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411669#M100639</link>
      <description>&lt;P&gt;Brilliant! You are right!! Thank you a lot!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 20:03:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411669#M100639</guid>
      <dc:creator>Jaaa</dc:creator>
      <dc:date>2017-11-08T20:03:20Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411678#M100645</link>
      <description>&lt;P&gt;Can I ask you a quick question? I've seen some posts that using INTNX function with "QTR" for returning quarter date, why can't we use that?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks indeed!!! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 20:29:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411678#M100645</guid>
      <dc:creator>Jaaa</dc:creator>
      <dc:date>2017-11-08T20:29:28Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411685#M100649</link>
      <description>&lt;P&gt;You can.&amp;nbsp; But there are only four "first days of a quarter" per year:&amp;nbsp; January 1, April 1, July 1, and October&amp;nbsp;1.&amp;nbsp; If you want the first day of a time period, it's not possible for INTNX with QTR to return any other value.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 20:35:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411685#M100649</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-11-08T20:35:28Z</dc:date>
    </item>
    <item>
      <title>Re: define date range and generate date increments</title>
      <link>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411688#M100651</link>
      <description>&lt;P&gt;very well understood! Thank you very much for the explanation!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Nov 2017 20:41:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/define-date-range-and-generate-date-increments/m-p/411688#M100651</guid>
      <dc:creator>Jaaa</dc:creator>
      <dc:date>2017-11-08T20:41:30Z</dc:date>
    </item>
  </channel>
</rss>

