<?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: dates in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144670#M28869</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1/ Do not mix up the different dates doing a calculation on your own.&lt;/P&gt;&lt;P&gt;The intnx is meant to get a correct date calculated to specific interval. see alignment: &lt;A href="http://support.sas.com/documentation/cdl/en/lefunctionsref/67239/HTML/default/viewer.htm#p10v3sa3i4kfxfn1sovhi5xzxh8n.htm" title="http://support.sas.com/documentation/cdl/en/lefunctionsref/67239/HTML/default/viewer.htm#p10v3sa3i4kfxfn1sovhi5xzxh8n.htm"&gt;SAS(R) 9.4 Functions and CALL Routines: Reference, Second Edition&lt;/A&gt;&lt;/P&gt;&lt;P&gt;2/ getting back to a formatted date, just use sas the correct formats on a date (date/time) value, no need to compose something yourself. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 31 Jul 2014 15:49:11 GMT</pubDate>
    <dc:creator>jakarman</dc:creator>
    <dc:date>2014-07-31T15:49:11Z</dc:date>
    <item>
      <title>dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144669#M28868</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, I have the below code written. Macro bus_str_m1 and current_ui_m1 resolves to '31-Jun-2014' when dd = 31July2014. However '31-Jun-2014' is an invalid date, I would like it to be '30-Jun-2014'. How would I re-write the code if I want the variables work the same on all other days except for month end or invalid dates? Is there a way SAS can automatically check for invalid dates?&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('yyyymmdd', put(today(), yymmddn8.) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('yyyymm', put(today(), yymmn6.) );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dd = day(today());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MONTH_STR_M1&amp;nbsp;&amp;nbsp;&amp;nbsp; = intnx('month',input(put(&amp;amp;yyyymm, 6.), yymmn6.),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MONTH_END_M1&amp;nbsp;&amp;nbsp;&amp;nbsp; = intnx('month',input(put(&amp;amp;yyyymm, 6.), yymmn6.),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MONTH_END_P1&amp;nbsp;&amp;nbsp;&amp;nbsp; = intnx('month',input(put(&amp;amp;yyyymm, 6.), yymmn6.),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MONTH_CURR_UI&amp;nbsp;&amp;nbsp; = intnx('month',input(put(&amp;amp;yyyymm, 6.), yymmn6.),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -13);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('bur_str_m1', "'"||put(dd,z2.)||"-"||PUT(MONTH_END_P1, monname3.)||"-"||put(MONTH_STR_M1,year4.)||"'");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('bur_end_m1', "'"||put(dd,z2.)||"-"||PUT(MONTH_STR_M1, MONNAME3.)||"-"||PUT(MONTH_END_M1,YEAR4.)||"'");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('current_ui_m1', "'"||put(dd,z2.)||"-"||PUT(MONTH_CURR_UI, MONNAME3.)||"-"||PUT(MONTH_CURR_UI,YEAR4.)||"'");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('pre_yyyymm', PUT(MONTH_END_P1,yymmn6.));&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12pt; font-family: Courier New;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;bur_str_m1 &amp;amp;bur_end_m1 &amp;amp;current_ui_m1 &amp;amp;pre_yyyymm;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;'31-Jun-2014' '31-Jul-2014' '31-Jun-2013' 201406&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Santosh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 15:37:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144669#M28868</guid>
      <dc:creator>helloSAS</dc:creator>
      <dc:date>2014-07-31T15:37:36Z</dc:date>
    </item>
    <item>
      <title>Re: dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144670#M28869</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1/ Do not mix up the different dates doing a calculation on your own.&lt;/P&gt;&lt;P&gt;The intnx is meant to get a correct date calculated to specific interval. see alignment: &lt;A href="http://support.sas.com/documentation/cdl/en/lefunctionsref/67239/HTML/default/viewer.htm#p10v3sa3i4kfxfn1sovhi5xzxh8n.htm" title="http://support.sas.com/documentation/cdl/en/lefunctionsref/67239/HTML/default/viewer.htm#p10v3sa3i4kfxfn1sovhi5xzxh8n.htm"&gt;SAS(R) 9.4 Functions and CALL Routines: Reference, Second Edition&lt;/A&gt;&lt;/P&gt;&lt;P&gt;2/ getting back to a formatted date, just use sas the correct formats on a date (date/time) value, no need to compose something yourself. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jul 2014 15:49:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144670#M28869</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2014-07-31T15:49:11Z</dc:date>
    </item>
    <item>
      <title>Re: dates</title>
      <link>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144671#M28870</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use the intnx function to return the same day of the previous month:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;intnx('month',&lt;EM&gt;datevar,&lt;/EM&gt;-1,'s'). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SAS designed this very intelligently for month's with 31 days.&amp;nbsp; In the event that the previous month does not have as many days, it will default to the end of the month.&amp;nbsp; So running this with a current date of 3/29/2014 would return 2/28/2014 as the same day from the previous month.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then, rather than build your own string, just use the date11 format:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dd = day(today());&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pd = intnx('month',dd,-1,'s');&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL SYMPUT('bur_str_m1', "'"||put(pd,date11.)||"'");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Aug 2014 14:40:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/dates/m-p/144671#M28870</guid>
      <dc:creator>nathan_owens</dc:creator>
      <dc:date>2014-08-01T14:40:26Z</dc:date>
    </item>
  </channel>
</rss>

