LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (July 2007, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 9 Jul 2007 20:08:34 +1000
Reply-To:     d@dkvj.biz
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         David Johnson <d@DKVJ.BIZ>
Subject:      Re: A QUESTION ABOUT SAS DATE TIME.
In-Reply-To:  <200707090939.l68AkCc3000761@malibu.cc.uga.edu>
Content-Type: text/plain; charset="iso-8859-1"

The statement "Informat ... ;" in Data TWO assigns an attribute to the column Y. This means if something is read into this column from an external data source like an infile, or a cards statement, then the informat will perform the transition from input text to stored value. Since you have done an assignment to Y in the next line, there is no transition from an external source and the value is simply assigned to the numeric column.

In Data ONE, you have a string value in quotes, and use the informat to read the external value, so the informat is used to make the change.

Thus Data ONE will have 11:30 as a time value, underlying which will be a value which is the number of seconds 11:30 is past midnight (11 * 3600 + 1800). And Data TWO will have a value which is 1130 seconds past midnight. Since there are 3600 seconds in an hour, it will be around 20 minutes past midnight.

Kind regards

David

-----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU]On Behalf Of V. Bourcier Sent: Monday, 9 July 2007 7:40 PM To: SAS-L@LISTSERV.UGA.EDU Subject: Re: A QUESTION ABOUT SAS DATE TIME.

Hi,

I've used the code suggested above and I am trying to figure out why data set two does not print the save as data set one.

data one; y=input('1130',nd8601tm.); format y time5.; run;

proc print data=one; run;

data two; informat y nd8601tm.; y=1130; format y time5.; run;

proc print data=two; run;

Best Regards

Veronique

>>>I have following Character variable: >>> >>>C_time >>>------- >>>1130 >>>1230 >>>0945 >>> >>>need the following numeric variable output: >>> >>>C_Time >>>------ >>>11:30 >>>12:30 >>>09:45 >>> >>> >>>Now I have the following to numeric variables: >>> >>>Date C_Time >>>--------- ------- >>>23DEC2005 11:30 >>>27DEC2007 12:30 >>> >>>Need a output using DHMS fuction to get a SAS datetime value. >>> >>>Thanks for your help. >> >>Try this: >> >> data have; >> input Date : date9. C_time : $4.; >> format date date9.; >> datalines; >> 23DEC2005 1130 >> 27DEC2007 1230 >> . 0945 >> run; >> >> proc sql; >> create table need as >> select date >> , input ( C_time , ND8601TM. ) >> as C_Time format=time5. >> , dhms ( date , 0, 0 , calculated c_time ) >> as MyDateTime format=datetime19. >> from have; >> quit; >> >>Result: >> >> Date C_Time MyDateTime >> >> 23DEC2005 11:30 23DEC2005:11:30:00 >> 27DEC2007 12:30 27DEC2007:12:30:00 >> . 9:45 . > >Also see > >http://sascommunity.org/wiki/Time_Informats


Back to: Top of message | Previous page | Main SAS-L page