Help using Base SAS procedures

Convert start time to a differ time

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 114
Accepted Solution

Convert start time to a differ time

I have a table that has a start time which is a datetime field ... I need to convert the start time to a morning time if the original eq 22:30. I need it to change time to 08:00 and day would be the following day
For example

Start time new time
29Apr18 22:30:00. 30Apr18 08:00:00

29Apr18 01:00:00. 30Apr18 08:00:00

Accepted Solutions
Solution
‎05-01-2018 05:48 PM
PROC Star
Posts: 1,772

Re: Convert start time to a differ time

data want;
starttime='29Apr18 22:30:00'dt;
if timepart(starttime)='22:30't then starttime=dhms(datepart(intnx('dtDay', starttime, 1)),8,0,0);
 format starttime datetime20.;run;

View solution in original post


All Replies
Frequent Contributor
Posts: 114

Re: Convert start time to a differ time

The start time could vary anyyhing = greater than 22:30
Solution
‎05-01-2018 05:48 PM
PROC Star
Posts: 1,772

Re: Convert start time to a differ time

data want;
starttime='29Apr18 22:30:00'dt;
if timepart(starttime)='22:30't then starttime=dhms(datepart(intnx('dtDay', starttime, 1)),8,0,0);
 format starttime datetime20.;run;
Super User
Posts: 13,508

Re: Convert start time to a differ time

[ Edited ]

@Gil_ wrote:
The start time could vary anyyhing = greater than 22:30

But your example

29Apr18 01:00:00. 30Apr18 08:00:00

I much less than 22:30. Was that a typo of some flavor.

 

Possibly intending

  30Apr18 01:00:00. 30Apr18 08:00:00

Which would likely mean that your rule is "any time after 22:30 on one day gets advanced to 08:00 the next day 

 

   and any time prior to 08:00 gets set to 08:00 for the same day".

Example of the above rule:

data want;
   input starttime datetime.;
   format starttime datetime.;
   if timepart(starttime) ge '22:30't then wanttime=dhms(datepart(starttime)+1,8,0,0);
   else if timepart(starttime) < '08:00't then wanttime=dhms(datepart(starttime),8,0,0);
   else wanttime=starttime;
   format wanttime datetime.;
datalines;
29Apr18:22:30:00
30Apr18:01:00:00
30Apr18:12:00:00
;
run;
Frequent Contributor
Posts: 114

Re: Convert start time to a differ time

Thank you
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 130 views
  • 0 likes
  • 3 in conversation