<?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: Converting Date and Time to Character in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921243#M362788</link>
    <description>&lt;P&gt;Since dates are in DAYS and datetimes are in SECONDS take a number of seconds and converting it to a number of days and then treating it as it if was still a number of seconds is why your second attempt is ending up in 1960.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Today is day number 23,456 and since there are 86,000 seconds in a day that is still early in the morning of the first day.&lt;/P&gt;
&lt;PRE&gt;1    data _null_;
2      today=date();
3      put today= comma10. today= date9. today=tod8. today=datetime19.;
4    run;

today=23,456 today=21MAR2024 today=06:30:56 today=01JAN1960:06:30:56
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
&lt;/PRE&gt;
&lt;P&gt;SAS has a format to display datetime values in that ISO 8601 style, E8601DT16.&amp;nbsp; Example:&lt;/P&gt;
&lt;PRE&gt;5
6    data _null_;
7      now=datetime();
8      put now=comma20. now=datetime19. now=e8601dt19. now=e8601dt16.;
9    run;

now=2,026,602,149 now=21MAR2024:01:02:29 now=2024-03-21T01:02:29 now=2024-03-21T01:02
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
&lt;/PRE&gt;
&lt;P&gt;If you want to eliminate the 'T00:00' suffix you could just use TRANWRD().&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input dt :datetime. expect :$16. ;
  format dt datetime19.;
cards;
19APR2022:00:00:00.000	2022-04-19
11MAY2021:12:24:00.000	2021-05-11T12:24
20APR2022:00:00:00.000	2022-04-20
09MAR2021:10:21:00.000	2021-03-09T10:21
13APR2021:08:25:00.000	2021-04-13T08:25
30MAR2021:12:12:00.000	2021-03-30T12:12
22FEB2024:16:25:00.000	2024-02-22T16:25
12OCT2020:00:00:00.000	2020-10-12
;

data want;
  set have;
  length string $16 ;
  string=tranwrd(put(dt,e8601dt16.),'T00:00',' ');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;Obs                     dt    expect              string

 1      19APR2022:00:00:00    2022-04-19          2022-04-19
 2      11MAY2021:12:24:00    2021-05-11T12:24    2021-05-11T12:24
 3      20APR2022:00:00:00    2022-04-20          2022-04-20
 4      09MAR2021:10:21:00    2021-03-09T10:21    2021-03-09T10:21
 5      13APR2021:08:25:00    2021-04-13T08:25    2021-04-13T08:25
 6      30MAR2021:12:12:00    2021-03-30T12:12    2021-03-30T12:12
 7      22FEB2024:16:25:00    2024-02-22T16:25    2024-02-22T16:25
 8      12OCT2020:00:00:00    2020-10-12          2020-10-12

&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 21 Mar 2024 05:08:36 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2024-03-21T05:08:36Z</dc:date>
    <item>
      <title>Converting Date and Time to Character</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921237#M362784</link>
      <description>&lt;P&gt;Hello!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For reporting purposes, I am trying to convert numeric datetime records to character.&amp;nbsp;I have the following:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;HAVE (Numeric, datetime22.3)&lt;/TD&gt;&lt;TD&gt;WANT (Character)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;19APR2022:00:00:00.000&lt;/TD&gt;&lt;TD&gt;2022-04-19&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;11MAY2021:12:24:00.000&lt;/TD&gt;&lt;TD&gt;2021-05-11T12:24&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;20APR2022:00:00:00.000&lt;/TD&gt;&lt;TD&gt;2022-04-20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;09MAR2021:10:21:00.000&lt;/TD&gt;&lt;TD&gt;2021-03-09T10:21&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;13APR2021:08:25:00.000&lt;/TD&gt;&lt;TD&gt;2021-04-13T08:25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;30MAR2021:12:12:00.000&lt;/TD&gt;&lt;TD&gt;2021-03-30T12:12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;22FEB2024:16:25:00.000&lt;/TD&gt;&lt;TD&gt;2024-02-22T16:25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;12OCT2020:00:00:00.000&lt;/TD&gt;&lt;TD&gt;2020-10-12&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How would I get a character result for the HAVE variable? I have tried:&lt;/P&gt;&lt;P&gt;WANT=put(datepart(HAVE),yymmdd10.);&lt;/P&gt;&lt;P&gt;but this does not include the time part.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also tried:&lt;/P&gt;&lt;P&gt;WANT=put(datepart(HAVE),datetime22.3);&lt;/P&gt;&lt;P&gt;but it only gives me 01JAN1960:xx:xx:xx.000 for each record, not the actual date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is it possible to do this another way? Any guidance would be appreciated. Thank you in advance!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;Yawen&lt;/P&gt;</description>
      <pubDate>Thu, 21 Mar 2024 03:29:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921237#M362784</guid>
      <dc:creator>yawen929</dc:creator>
      <dc:date>2024-03-21T03:29:34Z</dc:date>
    </item>
    <item>
      <title>Re: Converting Date and Time to Character</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921241#M362786</link>
      <description>&lt;P&gt;There is a big list of ready made formats available documented &lt;A href="https://go.documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/leforinforref/n0p2fmevfgj470n17h4k9f27qjag.htm" target="_self"&gt;here&lt;/A&gt;. If you're dealing with SAS DateTime values then you need to use the formats for SAS DateTime values, if you've got a SAS Date value then use the formats for SAS Date values. The datepart() function allows you to convert a SAS DateTime value to a SAS Date value so you then can use a SAS Date Format for the created SAS Date value.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;...And if none of the SAS provided formats return exactly what you want then you can also create your own picture format with date or datetime directives (documented as part of Proc Format docu).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For reporting purpose: I wouldn't convert a SAS Date or DateTime value to a character but just use the format you want for the variable. Using the numerical values with a format also has the advantage that the dates will sort numerically and not alphabetically. If you use character variables then for example August would in some reports appear before June.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here some demo code to illustrate the concept&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  sas_dt_value='10jan2024'd;
  sas_dttm_value='10jan2024 10:15:45'dt;
run;

proc print data=have;
  var sas_dt_value sas_dttm_value;
  format sas_dt_value date9. sas_dttm_value datetime20.;
run;

proc print data=have;
  var sas_dt_value sas_dttm_value;
  format sas_dt_value mmddyy10. sas_dttm_value NLDATMMD.;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1710995922846.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/94826iAEE08386DC520ACF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_0-1710995922846.png" alt="Patrick_0-1710995922846.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Mar 2024 04:38:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921241#M362786</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2024-03-21T04:38:49Z</dc:date>
    </item>
    <item>
      <title>Re: Converting Date and Time to Character</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921243#M362788</link>
      <description>&lt;P&gt;Since dates are in DAYS and datetimes are in SECONDS take a number of seconds and converting it to a number of days and then treating it as it if was still a number of seconds is why your second attempt is ending up in 1960.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Today is day number 23,456 and since there are 86,000 seconds in a day that is still early in the morning of the first day.&lt;/P&gt;
&lt;PRE&gt;1    data _null_;
2      today=date();
3      put today= comma10. today= date9. today=tod8. today=datetime19.;
4    run;

today=23,456 today=21MAR2024 today=06:30:56 today=01JAN1960:06:30:56
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
&lt;/PRE&gt;
&lt;P&gt;SAS has a format to display datetime values in that ISO 8601 style, E8601DT16.&amp;nbsp; Example:&lt;/P&gt;
&lt;PRE&gt;5
6    data _null_;
7      now=datetime();
8      put now=comma20. now=datetime19. now=e8601dt19. now=e8601dt16.;
9    run;

now=2,026,602,149 now=21MAR2024:01:02:29 now=2024-03-21T01:02:29 now=2024-03-21T01:02
NOTE: DATA statement used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
&lt;/PRE&gt;
&lt;P&gt;If you want to eliminate the 'T00:00' suffix you could just use TRANWRD().&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input dt :datetime. expect :$16. ;
  format dt datetime19.;
cards;
19APR2022:00:00:00.000	2022-04-19
11MAY2021:12:24:00.000	2021-05-11T12:24
20APR2022:00:00:00.000	2022-04-20
09MAR2021:10:21:00.000	2021-03-09T10:21
13APR2021:08:25:00.000	2021-04-13T08:25
30MAR2021:12:12:00.000	2021-03-30T12:12
22FEB2024:16:25:00.000	2024-02-22T16:25
12OCT2020:00:00:00.000	2020-10-12
;

data want;
  set have;
  length string $16 ;
  string=tranwrd(put(dt,e8601dt16.),'T00:00',' ');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;Obs                     dt    expect              string

 1      19APR2022:00:00:00    2022-04-19          2022-04-19
 2      11MAY2021:12:24:00    2021-05-11T12:24    2021-05-11T12:24
 3      20APR2022:00:00:00    2022-04-20          2022-04-20
 4      09MAR2021:10:21:00    2021-03-09T10:21    2021-03-09T10:21
 5      13APR2021:08:25:00    2021-04-13T08:25    2021-04-13T08:25
 6      30MAR2021:12:12:00    2021-03-30T12:12    2021-03-30T12:12
 7      22FEB2024:16:25:00    2024-02-22T16:25    2024-02-22T16:25
 8      12OCT2020:00:00:00    2020-10-12          2020-10-12

&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Mar 2024 05:08:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/921243#M362788</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-03-21T05:08:36Z</dc:date>
    </item>
    <item>
      <title>Re: Converting Date and Time to Character</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/932374#M366784</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;SAS has a format to display datetime values in that ISO 8601 style, E8601DT16.&amp;nbsp; Example:
&lt;PRE&gt;5
6    data _null_;
7      now=datetime();
8      put now=comma20. now=datetime19. now=e8601dt19. now=e8601dt16.;
9    run;

now=2,026,602,149 now=21MAR2024:01:02:29 now=2024-03-21T01:02:29 now=2024-03-21T01:02
&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;This was wonderful&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/159"&gt;@Tom&lt;/a&gt;&amp;nbsp;, thanks!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;- Dr. Abhijeet Safai&lt;/P&gt;</description>
      <pubDate>Fri, 14 Jun 2024 07:58:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Converting-Date-and-Time-to-Character/m-p/932374#M366784</guid>
      <dc:creator>DrAbhijeetSafai</dc:creator>
      <dc:date>2024-06-14T07:58:31Z</dc:date>
    </item>
  </channel>
</rss>

