BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
eagles_dare13
Obsidian | Level 7

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.

1 ACCEPTED SOLUTION

Accepted Solutions
JasonAllen
SAS Employee

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;

View solution in original post

2 REPLIES 2
Reeza
Super User

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

round(time, 1)

JasonAllen
SAS Employee

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;

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 4352 views
  • 3 likes
  • 3 in conversation