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

What is the correct informat and format to use for a date-time field that looks like this?:  2020-09-18T17:58:59-0700

 

I have tried

informat timestamp E8601Dz25.;

format timestamp E8601Dz25.;* B8601DX25.;

input participantId timestamp E8601Dz25. bNumber;

 

I have tried

informat timestamp B8601DX25.;

format timestamp B8601DX25.;

input participantId timestamp E8601DX25. bNumber;

 

 

Regardless, I receive this error message:  NOTE: Invalid data for timestamp in line 1 8-32.

 

 

I have tried changing the length to match the number of characters in the date, i.e. 24

informat timestamp E8601Dz24.;

 

This causes the next variable to be read incorrectly.

 

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

@TOM123 wrote:

Can't share the data.


The issue as I stated is with the value of the offset. If it only occurs for one value in the input file then easiest may be to insert the : in a plain text editor.

If you have a mix of values with the offset having : and some not then you will need to parse the individual values and implement something similar to my second example.

 

View solution in original post

4 REPLIES 4
ballardw
Super User

Show the entire log for that data step.

Including the bit where SAS shows the invalid data line.

 

I think part of your problem is that the time offset is not correct for the informat. Note this works:

data example;
  input x e8601dz.;
  format x datetime16.;
datalines;
2020-09-18T17:58:59-07:00
;

So you need to insert a : in the time offset before using Input. One way, read the value into a string variable long enough to hold the value plus an inserted colon character, do the insert and input the result.

data example;
  length xstr $ 26.;
  input xstr :$25.;
  x = input(catx(':',substr(xstr,1,22),substr(xstr,23)),e8601dz.);
  format x datetime16.;
datalines;
2020-09-18T17:58:59-0700
;
TOM123
Calcite | Level 5

Can't share the data.

ballardw
Super User

@TOM123 wrote:

Can't share the data.


The issue as I stated is with the value of the offset. If it only occurs for one value in the input file then easiest may be to insert the : in a plain text editor.

If you have a mix of values with the offset having : and some not then you will need to parse the individual values and implement something similar to my second example.

 

TOM123
Calcite | Level 5

Thank you.  I will try this. 

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 543 views
  • 0 likes
  • 2 in conversation