## How to round up a date to nearest second

Solved
Frequent Contributor
Posts: 82

# How to round up a date to nearest second

What function can I use to change:

2014-07-09 11:42:34:826  -->

2014-07-09 11:42:35:000

i.e  round the millisecond to the nearest second and put 000 in the millisecond portion. I need to use the rounded value in a join condition.

Accepted Solutions
Solution
‎07-10-2014 04:36 PM
SAS Employee
Posts: 15

## Re: How to round up a date to nearest second

Hello eagles_dare13,

If your input data is consistently the same length (23 characters) and formatted as your example data, maybe try:

data have;

infile datalines delimiter=',';

format

dt \$23.;

input dt;

datalines;

2014-07-09 11:42:34:826

;

run;

data want;

set have;

format

dt2 e8601dt23.3;

substr(dt,20,1)='.';

put dt=;

dt2=input(dt,e8601dt23.3);

dt2=ceil(dt2);

put dt2=;

run;

All Replies
Super User
Posts: 23,773

## Re: How to round up a date to nearest second

I think the milliseconds come from the decimal point so try rounding to the nearest digit

round(time, 1)

Solution
‎07-10-2014 04:36 PM
SAS Employee
Posts: 15

## Re: How to round up a date to nearest second

Hello eagles_dare13,

If your input data is consistently the same length (23 characters) and formatted as your example data, maybe try:

data have;

infile datalines delimiter=',';

format

dt \$23.;

input dt;

datalines;

2014-07-09 11:42:34:826

;

run;

data want;

set have;

format

dt2 e8601dt23.3;

substr(dt,20,1)='.';

put dt=;

dt2=input(dt,e8601dt23.3);

dt2=ceil(dt2);

put dt2=;

run;

🔒 This topic is solved and locked.