<?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 do I convert character date time to numeric time? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517523#M139946</link>
    <description>&lt;P&gt;Mr Genius, May i request a couple of comments on how this&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;t&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;round&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;dtc&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; anydttme30&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1e-6&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;round 1e-6 works plz?&lt;/P&gt;
&lt;P&gt;i.e when you have time at your own convenience. Thank you!&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 30 Nov 2018 15:52:11 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-11-30T15:52:11Z</dc:date>
    <item>
      <title>How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517502#M139929</link>
      <description>&lt;P&gt;I have a field contains time like this 1/1/1970 6:53:58.000000 PM, how to convert to 18:53:58? Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 15:02:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517502#M139929</guid>
      <dc:creator>grace999</dc:creator>
      <dc:date>2018-11-30T15:02:29Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517519#M139944</link>
      <description>&lt;P&gt;you could try anydtdte.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
date=timepart(input(date,anydtdte.));
format time time8.;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 30 Nov 2018 15:37:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517519#M139944</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2018-11-30T15:37:27Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517520#M139945</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/142740"&gt;@grace999&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Are the decimals always zero? If&amp;nbsp;so, you can use&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;t=input(dtc, anydttme30.);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;for the transformation, where dtc is the name of the date time (character) variable. The result is a SAS time value and can be formatted with the TIME8. format to obtain the desired output.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
dtc='1/1/1970 6:53:58.000000 PM';
run;

data want;
set have;
t=input(dtc, anydttme30.);
format t time8.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If some values have non-zero decimals and you want to preserve these (internally), use&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;t=round(input(dtc, anydttme30.), 1e-6);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 15:39:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517520#M139945</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-11-30T15:39:07Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517523#M139946</link>
      <description>&lt;P&gt;Mr Genius, May i request a couple of comments on how this&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;t&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;round&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;dtc&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; anydttme30&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;1e-6&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;round 1e-6 works plz?&lt;/P&gt;
&lt;P&gt;i.e when you have time at your own convenience. Thank you!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 15:52:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517523#M139946</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-11-30T15:52:11Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517555#M139969</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, I should have commented on this. The ANYDTTME30. informat would read the decimals in any case. However, I suspect that internally a SAS datetime value is created in the first place, from which the time value is then extracted. The algorithm doing the extraction suffers from numeric representation issues. Note that current SAS datetime values are &amp;gt;1E9, so that a true precision of 6 decimals (i.e. 10+6&amp;gt;15 decimal digits in total)&amp;nbsp;cannot be achieved in general. I remember a discussion about TIMEPART in this forum earlier this year (?) where this was the issue.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;By using the ROUND function I remove the artifacts introduced by the algorithm.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
dtc='1/1/1970 6:53:58.654321 PM';
run;

data _null_;
set have;
t_bad=input(dtc, anydttme30.);
t=round(input(dtc, anydttme30.), 1e-6);
put (t:) (=best18.);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;t_bad=68038.6543210&lt;FONT color="#FF0000"&gt;148&lt;/FONT&gt; t=68038.654321&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually, if the six decimals are non-zero (for some values) and they are very important, one should prefer an approach extracting the "time part" first &lt;EM&gt;as a substring&lt;/EM&gt; and then apply a &lt;EM&gt;time&lt;/EM&gt; informat to that substring. This would&amp;nbsp;avoid the somewhat risky internal computations involving numbers with possibly insufficient precision.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 16:31:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517555#M139969</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-11-30T16:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517557#M139971</link>
      <description>&lt;P&gt;Slick and can't be more neat. Thank you for your time, just added to my notes.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 16:35:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517557#M139971</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-11-30T16:35:51Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517620#M139995</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/32733"&gt;@FreelanceReinh&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Actually, if the six decimals are non-zero (for some values) and they are very important, one should prefer an approach extracting the "time part" first &lt;EM&gt;as a substring&lt;/EM&gt; and then apply a &lt;EM&gt;time&lt;/EM&gt; informat to that substring. This would&amp;nbsp;avoid the somewhat risky internal computations involving numbers with possibly insufficient precision.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Interesting: It has turned out that &lt;EM&gt;time&lt;/EM&gt; informats are prone to numerical accuracy issues as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
t=input('12:12:17.932445 AM',time18.);
put t= best18.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;t=737.932444999998&lt;/PRE&gt;
&lt;P&gt;So, their results would require rounding, too.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In a check of 50 million random date time values (with six decimals) from the date range 1970 - 2050 the formula suggested earlier (&lt;FONT face="courier new,courier"&gt;t=round(input(dtc, anydttme30.), 1e-6);&lt;/FONT&gt;)&amp;nbsp; produced only correct results.&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 19:37:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517620#M139995</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-11-30T19:37:10Z</dc:date>
    </item>
    <item>
      <title>Re: How do I convert character date time to numeric time?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517632#M140000</link>
      <description>&lt;P&gt;Thank you so much for your help!&lt;/P&gt;</description>
      <pubDate>Fri, 30 Nov 2018 20:06:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-convert-character-date-time-to-numeric-time/m-p/517632#M140000</guid>
      <dc:creator>grace999</dc:creator>
      <dc:date>2018-11-30T20:06:46Z</dc:date>
    </item>
  </channel>
</rss>

