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. 

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

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.

SAS Training: Just a Click Away

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

Browse our catalog!

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