<?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: Min and max dates with proc sql date type conflictsconvert all the in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Min-and-max-dates-with-proc-sql-date-type-conflictsconvert-all/m-p/152640#M40145</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, firstly your code can be shrunk down into the one proc sql:&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table WANT as&lt;/P&gt;&lt;P&gt;&amp;nbsp; select&amp;nbsp; MIN(DTC) as MIN_DTC format=datetime.,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAX(DTC) as MAX_DTC format=datetime.&lt;/P&gt;&lt;P&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; (select case when length(strip(DTC))=10 then input(strip(DTC)||"T00:00:00",e8601dt.)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when length(strip(DTC))=16 then input(strip(DTC)||":00",e8601dt.)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else input(DTC,e8601dt.) end as DTC from VISIT);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As for what to do about comparisons, this is really up to what your company/project team decide.&amp;nbsp; There are several options:&lt;/P&gt;&lt;P&gt;Only compare where full date and time present. &lt;/P&gt;&lt;P&gt;Only compare dates.&lt;/P&gt;&lt;P&gt;Compare date/times and populate time with a fixed timepoint if missing.&lt;/P&gt;&lt;P&gt;We can't really tell you which one to choose as that would be on a per-study basis.&lt;/P&gt;&lt;P&gt;As for CDISC - SDTM, sorting and such like is done on the text value as it is.&amp;nbsp; For Adam, then it should be per the rules in you stats plan.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Feb 2015 13:29:45 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2015-02-04T13:29:45Z</dc:date>
    <item>
      <title>Min and max dates with proc sql date type conflictsconvert all the</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Min-and-max-dates-with-proc-sql-date-type-conflictsconvert-all/m-p/152639#M40144</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a little issue and I can't clear in how to resolve it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;lets say that I have the following data set :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data visit;&lt;/P&gt;&lt;P&gt;input subject $1-3&amp;nbsp; dtc $4-24 ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;123&amp;nbsp; 2014-01-15&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;123&amp;nbsp; 2014-01-15&lt;/SPAN&gt;T00:00&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;123&amp;nbsp; 2014-01-15&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;T00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to calculate the minimum date for this subject. In order to do so I have to convert date into a datetime type in order to compare them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data test_v; set visit ;&lt;/P&gt;&lt;P&gt;/*create a new dtc_up that will complete dtc*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if count(dtc,':') eq 2 then dtc_up=dtc;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if count(dtc,':')&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq 1 then dtc_up=compress(dtc!!":00");&lt;/P&gt;&lt;P&gt;else if count(dtc,':') eq 0 then do ;&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; if count(dtc,'-')&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq 2&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;&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;&amp;nbsp;&amp;nbsp; then dtc_up=compress(dtc!!"T00:00:00");&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; else if count(dtc,'-') eq 1&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;&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;&amp;nbsp;&amp;nbsp; then dtc_up=compress(dtc!!"-01T00:00:00");&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; else if count(dtc,'-') eq 0&amp;nbsp; and not missing(dtc) then dtc_up=compress(dtc!!"01-01T00:00:00");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else call missing(dtc_up);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if not missing(dtc_up)&amp;nbsp; then dt_anydtm=input(dtc_up,anydtdtm.);&lt;/P&gt;&lt;P&gt;else call missing(dt_anydtm);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once I have done this I use a proc sql statement to compute the minimum:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table min as&lt;/P&gt;&lt;P&gt;select subject, min(dt_anydtm) as svstdtc format=IS8601DT.&lt;/P&gt;&lt;P&gt;from test_v&lt;/P&gt;&lt;P&gt;group by subject;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Problem, from which record is the minimum value taken from ????&amp;nbsp; From record 1, from record 2 or from record 3 ? I need to know that because I'll create a new char variable called SVSTDTC which will capture the original minimum value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For those who are familiar to CIDSC I am trying to bild an SV domain.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By the way can SAS compare &lt;SPAN style="font-size: 13.3333330154419px;"&gt;2014-01-15&amp;nbsp; with &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;2014-01-15&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;T00:00 without performing the datastep above&amp;nbsp; and decide which is the minimum value ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Saskap&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2015 13:17:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Min-and-max-dates-with-proc-sql-date-type-conflictsconvert-all/m-p/152639#M40144</guid>
      <dc:creator>saskapa</dc:creator>
      <dc:date>2015-02-04T13:17:42Z</dc:date>
    </item>
    <item>
      <title>Re: Min and max dates with proc sql date type conflictsconvert all the</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Min-and-max-dates-with-proc-sql-date-type-conflictsconvert-all/m-p/152640#M40145</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, firstly your code can be shrunk down into the one proc sql:&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp; create table WANT as&lt;/P&gt;&lt;P&gt;&amp;nbsp; select&amp;nbsp; MIN(DTC) as MIN_DTC format=datetime.,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MAX(DTC) as MAX_DTC format=datetime.&lt;/P&gt;&lt;P&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; (select case when length(strip(DTC))=10 then input(strip(DTC)||"T00:00:00",e8601dt.)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when length(strip(DTC))=16 then input(strip(DTC)||":00",e8601dt.)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else input(DTC,e8601dt.) end as DTC from VISIT);&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As for what to do about comparisons, this is really up to what your company/project team decide.&amp;nbsp; There are several options:&lt;/P&gt;&lt;P&gt;Only compare where full date and time present. &lt;/P&gt;&lt;P&gt;Only compare dates.&lt;/P&gt;&lt;P&gt;Compare date/times and populate time with a fixed timepoint if missing.&lt;/P&gt;&lt;P&gt;We can't really tell you which one to choose as that would be on a per-study basis.&lt;/P&gt;&lt;P&gt;As for CDISC - SDTM, sorting and such like is done on the text value as it is.&amp;nbsp; For Adam, then it should be per the rules in you stats plan.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Feb 2015 13:29:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Min-and-max-dates-with-proc-sql-date-type-conflictsconvert-all/m-p/152640#M40145</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-02-04T13:29:45Z</dc:date>
    </item>
  </channel>
</rss>

